Bagaimana cara membunuh buffer (Cx k) ediff (A, B, C) secara otomatis di masing-masing ediff-quit
?
Bagaimana cara membunuh buffer (Cx k) ediff (A, B, C) secara otomatis di masing-masing ediff-quit
?
Jawaban:
(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)
Perhatikan bahwa ini akan selalu membunuh buffer-ediff, bahkan jika itu tidak dibuka oleh ediff misalnya Anda menelepon ediff-buffers
dengan beberapa buffer yang Anda buka untuk memulai.
Jika Anda ingin Anda juga bisa membunuh *ediff-errors*
, *ediff-diff*
, *Ediff-Registry*
dan *ediff-fine-diff*
juga, tetapi mereka umumnya tidak mengganggu saya.
Saya menambahkan jawaban karena ini adalah tautan pertama yang muncul untuk saya tentang topik ini, dan ini memang cara yang lebih sederhana.
Anda bisa memberikan awalan ke "q" dan itu akan meminta untuk membunuh buffer ediff.
Cu q
Jika Anda menyesuaikannya ediff-keep-variants
akan membalik perilaku: prompt untuk membunuh buffer saat keluar dan jika menggunakan awalan akan membiarkannya terbuka.
(dapatkan ini dari manual ediff)
Saya menggunakan kode ini (GNU Emacs 25.3.1 x86_64-pc-linux-gnu), mengikuti https://emacs.stackexchange.com/a/17089/18662
Sebagaimana dinyatakan dalam Manual Emacs GNU tentang ediff-quit-hook ( https://www.gnu.org/software/emacs/manual/html_node/ediff/Hooks.html ):
Perlu diingat bahwa kait yang dijalankan sebelum ediff-cleanup-mess dimulai pada ediff-control-buffer; mereka juga harus meninggalkan ediff-control-buffer sebagai buffer saat ini ketika mereka selesai. Kait yang dieksekusi setelah ediff-cleanup-mess seharusnya mengharapkan buffer saat ini berupa buffer A atau buffer B.
Jadi, saya bunuh juga buffer * Ediff Control Panel * . Buffer ediff lainnya dapat ditambahkan juga.
(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)
Anda dapat mencoba pengait ini:
(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
fungsi ke pengait (dan saran). Itu membuat meninjau variabel kait dan menghapus fungsi dari kait menyakitkan.
Ini yang saya gunakan untuk menutup windows:
(add-hook 'ediff-after-quit-hook-internal 'winner-undo)