Comment tuer automatiquement (Cx k) les tampons (A, B, C) d'ediff sur chacun ediff-quit
?
Comment tuer automatiquement (Cx k) les tampons (A, B, C) d'ediff sur chacun ediff-quit
?
Réponses:
(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)
Notez que cela tuera toujours les tampons ediff, même s'ils n'ont pas été ouverts par ediff, par exemple, vous avez appelé ediff-buffers
avec certains tampons que vous aviez ouverts pour commencer.
Si vous voulez vous pouvez aussi tuer *ediff-errors*
, *ediff-diff*
, *Ediff-Registry*
et *ediff-fine-diff*
aussi, mais ceux -ci ne généralement me dérange pas.
J'ajoute une réponse parce que c'est le premier lien qui est apparu pour moi sur ce sujet, et c'est en effet beaucoup plus simple.
Vous pouvez passer un préfixe à "q" et il vous demandera de tuer les tampons ediff.
Cu q
Si vous le personnalisez, ediff-keep-variants
il inversera le comportement: invite à tuer les tampons à la sortie et, si vous utilisez le préfixe, les laissera ouverts.
(obtenu cela du manuel ediff)
J'utilise ce code (GNU Emacs 25.3.1 x86_64-pc-linux-gnu), en suivant https://emacs.stackexchange.com/a/17089/18662
Comme indiqué dans le manuel GNU Emacs concernant ediff-quit-hook ( https://www.gnu.org/software/emacs/manual/html_node/ediff/Hooks.html ):
Gardez à l'esprit que les hooks s'exécutant avant le démarrage d'ediff-cleanup-mess dans ediff-control-buffer; ils doivent également laisser ediff-control-buffer comme tampon courant à la fin. Les hooks exécutés après ediff-cleanup-mess doivent s'attendre à ce que le tampon actuel soit le tampon A ou le tampon B.
Donc, je tue aussi le tampon * Ediff Control Panel * . D'autres tampons ediff peuvent également être ajoutés.
(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)
Vous pouvez essayer ce crochet:
(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
fonctions aux crochets (et aux conseils). Cela rend la révision des variables de hook et la suppression des fonctions des hooks pénibles.
Voici ce que j'utilise pour fermer les fenêtres:
(add-hook 'ediff-after-quit-hook-internal 'winner-undo)