Emacs 修改退出窗口以删除缓冲区而不只是埋葬它

bne*_*eil 7 emacs elisp

我想提出的Emacs不仅埋葬一个缓冲区,但杀死它太当我按下q一个*Completions*/*Help*/etc缓冲区。我无法使用替代键定义功能。我在 OSX 上运行 Emacs24。

这是我所拥有的:

(substitute-key-definition
        'quit-window '(lambda () (interactive) (quit-window "KILL")) global-map)
Run Code Online (Sandbox Code Playgroud)

小智 8

另一个答案实际上给出了略微不兼容的行为。考虑这样一种情况,您已经将一个框架拆分为两个窗口,然后您打开一个帮助缓冲区并退出它。quit-window足够聪明,知道它不应该杀死窗口,而应该杀死缓冲区。它实际上甚至还有一些更聪明的技巧,所以我们最好的办法是使用它并稍微调整一下。这是实现您想要的简单方法:

(defadvice quit-window (before quit-window-always-kill)
  "When running `quit-window', always kill the buffer."
  (ad-set-arg 0 t))
(ad-activate 'quit-window)
Run Code Online (Sandbox Code Playgroud)