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

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

我想让 Emacs 不仅埋葬缓冲区,而且在我按下缓冲区时也将其杀死q*Completions*/*Help*/etc我无法让替代键定义功能工作。我在 OSX 上运行 Emacs24。

以下是我所拥有的:

(substitute-key-definition
        'quit-window '(lambda () (interactive) (quit-window "KILL")) global-map)

答案1

另一个答案实际上给出了稍微不兼容的行为。考虑这样一种情况,您已经将一个框架拆分为两个窗口,然后打开一个帮助缓冲区并退出它。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)

答案2

重新定义该函数似乎对我有用

(defun quit-window () 
 "modified quit window"
 (interactive)
 (kill-buffer-and-window)
 )

我一直不明白在您按下 q 退出后切换缓冲区时仍然有完成或帮助缓冲区可用的目的。

相关内容