¿Cómo matar los amortiguadores de ediff al dejar de fumar?

9

¿Cómo matar los amortiguadores (Cx k) del ediff (A, B, C) automáticamente en cada uno ediff-quit?

denys
fuente
¿Realmente quiso decir cerrar los búferes, en lugar de cerrar las ventanas , es decir, volver a una sola ventana que muestra un solo archivo (pero dejar los archivos abiertos)?
Gilles 'SO- deja de ser malvado'
Sí, me refiero a matar buffers (Cx k)
denys
¿Por qué deseas hacer esto? A menudo, cuando hago un edificio, necesito continuar trabajando en uno de los amortiguadores después.
Andrew Swann
En mi caso, estoy usando ztree-diff para ver las diferencias y no estoy interesado en los archivos después de la diferencia la mayor parte del tiempo.
Alwyn Schoeman

Respuestas:

1
(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-bufferscon 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.

Joakim Hårsman
fuente
2

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)

Hoagie
fuente
1

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)
quimm2003
fuente
0

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))))
djangoliv
fuente
2
No se recomienda vincular lambdafunciones a ganchos (y consejos). Hace que la revisión de las variables de gancho y la eliminación de funciones de ganchos sea dolorosa.
Kaushal Modi
2
Esto efectivamente cierra las ventanas, pero la pregunta es matar a los buffers .
Gilles 'SO- deja de ser malvado'
0

Esto es lo que estoy usando para cerrar las ventanas:

(add-hook 'ediff-after-quit-hook-internal 'winner-undo)
clemera
fuente
1
Esto efectivamente cierra las ventanas, pero la pregunta es matar a los buffers .
Gilles 'SO- deja de ser malvado'