Emacs-буфер показывается после закрытия буфера - PullRequest
7 голосов
/ 20 мая 2011

Как я могу изменить способ, которым emacs выбирает, какой буфер показывать после закрытия буфера?

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

Я попытаюсь объяснить на примере:

  • Начните с нового emacs с * нуля *
  • C-x 2 (разбит на две колонки)
  • C-x C-f 1 (найти файл 1)
  • C-x o (переключиться на другой кадр)
  • C-x b 1 (найти файл 1)
  • C-x C-f 2 (найти файл 2)
  • C-x k (уничтожить буфер)

Теперь он переключается на scratch , но мне бы хотелось, чтобы он снова показывал 1 в обоих окнах, возможно ли заставить emacs вести себя таким образом?

Ответы [ 3 ]

3 голосов
/ 20 мая 2011

Возможно, это не прямой ответ на ваш вопрос, но это может помочь.

Emacs управляет своим списком буферов, в том числе решая, какой буфер будет отображаться при его уничтожении (через kill-buffer).Я не смотрел, как это делается, но документация "там" .Многие люди имеют созданный пользовательский буферный стек магию управления, чтобы изменить способ, которым emacs что-то делает, возможно, некоторые из них основаны на байесовском анализе или что-то в этом роде.Вы можете представить возможности.

Я никогда не задумывался об изменении способа управления буферами в emacs.Вместо этого я просто связываю other-window и switch-to-buffer с легкими нажатиями клавиш (Cx o, Cx b), и я действительно хорошо их использую.

Вы можете создать простую функцию для того, что вы хотите: она должна уничтожить все другие окна, а затем разделить окно так, чтобы текущий буфер отображался в обоих.К счастью, в Emacs есть функции, которые выполняют именно эти функции.

(defun cheeso-show-buffer-two-windows ()
  "Close all other windows; then split, and show the current
buffer in both windows."
  (interactive)
  (delete-other-windows)
  (split-window-vertically))

Свяжите это с нажатием клавиши, и бадда-бинг, вы там.Это вертикальное разделение - окна отображаются в вертикальной стопке.Если вы хотите, чтобы он был горизонтально разделен (окна расположены рядом), тогда замените ... ну, вы знаете.

0 голосов
/ 23 мая 2014

Вы используете tabbar-mode?У меня была та же проблема, и для меня причиной была вкладка.Панель вкладок добавляет функцию tabbar-buffer-kill-buffer-hook к kill-buffer-hook.Вы можете удалить его с помощью (remove-hook 'kill-buffer-hook 'tabbar-buffer-kill-buffer-hook).

. Если вы не используете вкладку, попробуйте M-x describe-variable kill-buffer-hook.Одна из функций в этом списке должна отвечать за работу с вашими буферами.

0 голосов
/ 20 мая 2011

Это также не совсем помогает напрямую, но Режим победителя может помочь вам добраться туда, куда вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...