これも、だいぶ前に書いたもの。
M-x shell でコマンドプロンプトに入って、作業後に C-k して "サブプロセスが走っています。" とか言われてムキッとなった人に。
けっこう重宝するので貼っておく。
(defun kill-process-and-buffer () (interactive) (let* ((buf (selected-buffer)) (proc (buffer-process buf))) (when proc (kill-process proc) (sleep-for 0.5)) (kill-buffer buf))) (add-hook 'ed::*shell-mode-hook* #'(lambda () (define-key ed::*shell-mode-map* #\C-\d 'kill-process-and-buffer) ; unix 風に C-d でも抜けるように (define-key ed::*shell-mode-map* '(#\C-x #\k) 'kill-process-and-buffer)))
フック先を変えれば shell 以外でも使える。