각각의 (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-buffers가 ediff에 의해 열리지 않았더라도 항상 ediff-buffers를 죽일 것 ediff-buffers
입니다.
당신은 또한 죽일 수 당신이 원하는 경우 *ediff-errors*
, *ediff-diff*
, *Ediff-Registry*
및 *ediff-fine-diff*
도 있지만 보통은 나를 귀찮게하지 않습니다.
https://emacs.stackexchange.com/a/17089/18662에 따라이 코드 (GNU Emacs 25.3.1 x86_64-pc-linux-gnu)를 사용하고 있습니다
ediff-quit-hook ( https://www.gnu.org/software/emacs/manual/html_node/ediff/Hooks.html ) 에 관한 GNU Emacs 매뉴얼에 명시된 바와 같이 :
ediff-cleanup-mes가 시작되기 전에 실행되는 후크는 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)