(Cx k)ediffの(A、B、C)バッファーを自動的に強制終了する方法はediff-quit
?
(Cx k)ediffの(A、B、C)バッファーを自動的に強制終了する方法はediff-quit
?
回答:
(defun my-kill-ediff-buffers ()
(kill-buffer ediff-buffer-A)
(kill-buffer ediff-buffer-B)
(kill-buffer ediff-buffer-C))
(add-hook 'ediff-quit-hook 'my-kill-ediff-buffers)
これはediffによって開かれていなくても、常にediff-bufferを強制終了することに注意してください。たとえばediff-buffers
、最初に開いていたバッファーで呼び出した場合などです。
あなたがしたい場合も殺すことができる*ediff-errors*
、*ediff-diff*
、*Ediff-Registry*
と*ediff-fine-diff*
だけでなく、しかし、それらは一般的に私を気にしないでください。
私はこのコードを使用しています(GNU Emacs 25.3.1 x86_64-pc-linux-gnu)、https: //emacs.stackexchange.com/a/17089/18662
ediff-quit-hookに関するGNU Emacsマニュアル(https://www.gnu.org/software/emacs/manual/html_node/ediff/Hooks.html)で述べられているように:
ediff-cleanup-messがediff-control-bufferで開始する前に実行されるフックに注意してください。また、終了時にediff-control-bufferを現在のバッファーとして残す必要があります。ediff-cleanup-messの後に実行されるフックは、現在のバッファーがバッファーAまたはバッファーBのいずれかであることを予期する必要があります。
そのため、* Ediff Control Panel *バッファーも強制終了します。他のediffバッファーも追加される場合があります。
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
(setq ediff-split-window-function 'split-window-horizontally)
(defvar q-ediff-last-windows nil)
(defun q-store-pre-ediff-winconfig ()
(setq q-ediff-last-windows (current-window-configuration)))
(defun q-restore-pre-ediff-winconfig ()
(progn
(set-window-configuration q-ediff-last-windows)
(ediff-kill-buffer-carefully "*Ediff Control Panel*")))
(add-hook 'ediff-before-setup-hook #'q-store-pre-ediff-winconfig)
(add-hook 'ediff-quit-hook #'q-restore-pre-ediff-winconfig)
あなたはこのフックを試すことができます:
(add-hook 'ediff-load-hook
(lambda ()
(add-hook 'ediff-before-setup-hook
(lambda ()
(setq ediff-before-file (buffer-file-name))
(setq ediff-saved-window-configuration (current-window-configuration))))
(let ((restore-window-configuration
(lambda ()
(set-window-configuration ediff-saved-window-configuration))))
(add-hook 'ediff-quit-hook restore-window-configuration 'append)
(add-hook 'ediff-suspend-hook restore-window-configuration 'append))))
lambda
関数をフック(およびアドバイス)にバインドすることはお勧めしません。これにより、フック変数の確認とフックからの関数の削除が困難になります。
これは私がウィンドウを閉じるために使用しているものです:
(add-hook 'ediff-after-quit-hook-internal 'winner-undo)