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