¿Cómo matar los amortiguadores (Cx k) del ediff (A, B, C) automáticamente en cada uno ediff-quit
?
¿Cómo matar los amortiguadores (Cx k) del ediff (A, B, C) automáticamente en cada uno ediff-quit
?
Respuestas:
(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)
Tenga en cuenta que esto siempre matará a los buffers de ediff, incluso si no fueron abiertos por ediff, por ejemplo, usted llamó ediff-buffers
con algunos buffers con los que había abierto para empezar.
Si desea también puede matar *ediff-errors*
, *ediff-diff*
, *Ediff-Registry*
y *ediff-fine-diff*
, así, pero los que generalmente no me molestan.
Estoy agregando una respuesta porque este es el primer enlace que apareció para mí sobre este tema, y de hecho es mucho más simple.
Puede pasar un prefijo a "q" y se le pedirá que elimine los buffers de ediff.
Cu q
Si lo personaliza ediff-keep-variants
, revertirá el comportamiento: solicitará que elimine los búferes al salir y, si usa el prefijo, los dejará abiertos.
(Obtuve esto del manual de ediff)
Estoy usando este código (GNU Emacs 25.3.1 x86_64-pc-linux-gnu), siguiendo https://emacs.stackexchange.com/a/17089/18662
Como se indica en el Manual GNU Emacs sobre ediff-quit-hook ( https://www.gnu.org/software/emacs/manual/html_node/ediff/Hooks.html ):
Tenga en cuenta que los ganchos se ejecutan antes de que ediff-cleanup-mess comience en ediff-control-buffer; también deberían dejar ediff-control-buffer como el buffer actual cuando terminen. Los ganchos que se ejecutan después de ediff-cleanup-mess deben esperar que el búfer actual sea el búfer A o el búfer B.
Entonces, también elimino el búfer * Ediff Control Panel * . También se pueden agregar otros amortiguadores de edificios.
(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)
Puedes probar este gancho:
(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
funciones a ganchos (y consejos). Hace que la revisión de las variables de gancho y la eliminación de funciones de ganchos sea dolorosa.
Esto es lo que estoy usando para cerrar las ventanas:
(add-hook 'ediff-after-quit-hook-internal 'winner-undo)