Как пропустить специальные буферы при уничтожении текущего буфера?

У меня есть код в моем .emacs который мешает ему показывать некоторые предварительно определенные специальные буферы, когда я использую previous-buffer и next-buffer :

 (defadvice next-buffer (after avoid-messages-buffer-in-next-buffer) (when (string= "*Messages*" (buffer-name)) (next-buffer)) (when (string= "*Completions*" (buffer-name)) (next-buffer)) (when (string-match "\*tramp.*\*" (buffer-name)) (previous-buffer)) ... and so on) 

Это отлично работает, но я бы хотел иметь ту же функциональность для Cx k . До сих пор я пытался написать такую ​​же функцию (defadvice (after kill-buffer) ...) , но это, похоже, не работает.

Как мне это сделать?

One Solution collect form web for “Как пропустить специальные буферы при уничтожении текущего буфера?”

Это должно работать:

 (defvar no-kill-buffers '("*Messages*" ;; ... )) (defadvice kill-buffer (around no-kill-some-buffers activate) (unless (member (buffer-name) no-kill-buffers) ad-do-it)) 

Причина, по которой ваш совет не срабатывал, заключается в том, что он был «после» совета, то есть он не запускался до тех пор, пока нормальная логика « kill-buffer не завершилась. (Это after в (after avoid-message-buffer-in-next-buffer) .

around совета, давайте ставим пользовательскую логику до или после рекомендации команды и даже контролируем, работает ли она вообще. Символ ad-do-it – это то, что говорит ему, когда и когда запускать обычную процедуру kill-buffer .

Редактировать:

Перечитав ваш вопрос, я думаю, что, возможно, неправильно понял его. Если вы хотите пропустить специальный буфер, который был бы отображен после убийства буфера, ваш подход в основном правильный. Вы активировали совет ?

Вы можете либо оценить (ad-activate 'avoid-messages-buffer-in-next-buffer) либо включить в конце списка аргументов значение defadvice как это было в моем примере.

  • Поиск сценария оболочки из Emacs
  • Скопируйте последнее сообщение Emacs в текущий буфер
  • Как использовать `smart-compile` без подтверждения в Emacs
  • Могу ли я обмануть сеанс docker run -it, переназначив ctrl + p key?
  • Просмотр японского текста в emacs без X11
  • Где находится комбинация клавиш Ctrl + / (^ /) bash для отмены?
  • В чем разница между каталогом `/ usr / share / emacs / site-lisp /` и `/ usr / share / emacs23 / site-lisp /`?
  • Emacs жалуется: шрифт «serif 10» не определен
  • Эффективно скопировать вставку (kill / yanking) с emacs, запущенным в tmux на Mac OS X
  • Как emacs могут быть настроены так, чтобы правильно принимать сочетания курсора Shift и Alt?
  • Сервер Emacs не может распознать ALT-ключ при доступе к Mac
  • Interesting Posts

    Как найти символическую ссылку, когда местоположение, в котором оно было создано, неизвестно?

    Настроить ошибку «Компилятор C не может создавать исполняемые файлы»

    Выполнять вторую команду в цепочке как другой пользователь

    Поиск файлов в порядке времени

    whiptail или диалог

    В ed (редактор строк), как создать новый файл для редактирования?

    Верхний предел UID и GID в AIX

    UDP RecvBufErrors из-за страниц pfmalloc в легко загружаемой машине

    shorewall – VoIP – буфер дрожания

    понять выход stty -a и изменить ctrl backspace на простое backspace

    Дополнительные группы openldap, не отображающиеся на определенных серверах

    Я удалил / boot-сервер, который все еще работает, переустанавливается?

    Полностью вывести команду буфера перед тем, как подключиться к другой команде?

    Как удалить первые n строк и последнюю строку файла с помощью команд оболочки?

    Ubuntu 12.04 не загружается, запрашивает низкий графический режим, не работает apt-get, потому что файловая система доступна только для чтения

    Linux и Unix - лучшая ОС в мире.