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, чтобы выйти из него ранее.

Другие вопросы по тегам