Emacs изменяет окно выхода, чтобы удалить буфер, а не просто похоронить его
Я бы хотел, чтобы Emacs не просто хоронил буфер, но и убивал его, когда я нажимаю q
в *Completions*/*Help*/etc
буфер. Я не могу заставить работать функцию определения заменяющего ключа. Я использую Emacs24 на OSX.
Вот что у меня есть:
(substitute-key-definition
'quit-window '(lambda () (interactive) (quit-window "KILL")) global-map)
2 ответа
Другой ответ на самом деле дает немного несовместимое поведение. Рассмотрим ситуацию, когда у вас уже есть рамка, разделенная на два окна, затем вы открываете буфер справки и выходите из него. 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)
Просто переопределение функции, похоже, сработало для меня, т.е.
(defun quit-window ()
"modified quit window"
(interactive)
(kill-buffer-and-window)
)
Я никогда не понимал, как важно, чтобы буфер завершения или справки оставался доступным при переключении буферов после того, как вы нажали q, чтобы выйти из него ранее.