Làm thế nào để tự động giết (Cx k) bộ đệm (A, B, C) của ediff ediff-quit
?
Làm thế nào để tự động giết (Cx k) bộ đệm (A, B, C) của ediff ediff-quit
?
Câu trả lời:
(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)
Lưu ý rằng điều này sẽ luôn giết bộ đệm ediff, ngay cả khi chúng không được mở bởi ediff, ví dụ như bạn đã gọi ediff-buffers
với một số bộ đệm mà bạn đã mở để bắt đầu.
Nếu bạn muốn, bạn cũng có thể giết chết *ediff-errors*
, *ediff-diff*
, *Ediff-Registry*
và *ediff-fine-diff*
là tốt, nhưng những người thường không làm phiền tôi.
Tôi đang thêm một câu trả lời vì đây là liên kết đầu tiên xuất hiện cho tôi về chủ đề này và đây thực sự là cách đơn giản hơn.
Bạn có thể chuyển tiền tố thành "q" và nó sẽ nhắc giết bộ đệm ediff.
Cu q
Nếu bạn tùy chỉnh, ediff-keep-variants
nó sẽ đảo ngược hành vi: prompt để giết bộ đệm khi thoát và nếu sử dụng tiền tố sẽ để chúng mở.
(lấy cái này từ hướng dẫn sử dụng)
Tôi đang sử dụng mã này (GNU Emacs 25.3.1 x86_64-pc-linux-gnu), theo dõi https://emacs.stackexchange.com/a/17089/18662
Như đã nêu trong Hướng dẫn sử dụng GNU Emacs về ediff-Thoát-hook ( https://www.gnu.org/software/emacs/manual/html_node/ediff/Hooks.html ):
Hãy nhớ rằng các hook thực thi trước khi ediff-dọn dẹp-mess bắt đầu trong ediff-control-buffer; họ cũng nên để bộ đệm điều khiển ediff làm bộ đệm hiện tại khi hoàn thành. Các hook được thực thi sau ediff-cleanup-mess nên mong đợi bộ đệm hiện tại là bộ đệm A hoặc bộ đệm B.
Vì vậy, tôi cũng giết bộ đệm * Bảng điều khiển Ediff * . Bộ đệm ediff khác có thể được thêm vào quá.
(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)
Bạn có thể thử cái móc này:
(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
chức năng với hook (và lời khuyên). Nó làm cho việc xem xét các biến hook và loại bỏ các chức năng khỏi hook.
Đây là những gì tôi đang sử dụng để đóng các cửa sổ:
(add-hook 'ediff-after-quit-hook-internal 'winner-undo)