Как заставить этот кадр Emacs сохранять свой буфер и не изменять размер?
Мой кадр Emacs выглядит следующим образом:
+---------------------------+
| | |
| | |
| | B |
| A | |
| | |
| | |
| |-------------|
| | C |
+---------------------------+
C
обычно является терминалом с каким-то долговременным процессом, например веб-сервером или демоном. К сожалению, всевозможные вещи, например, для переключения буфера в это окно, а иногда и его изменение. Как заблокировать буфер и высоту окна C
?
Ответы
Ответ 1
Если вы не хотите, чтобы вас раздражали кражи окна и изменение размера, поместите следующие строки в ваш .emacs для окончательного решения, которое работает даже с такими библиотеками, как gud, который пытается открыть новый фрейм, когда он может 't украсть ваши окна:
(см. этот ответ для получения информации о следующих advice
)
(defadvice pop-to-buffer (before cancel-other-window first)
(ad-set-arg 1 nil))
(ad-activate 'pop-to-buffer)
;; Toggle window dedication
(defun toggle-window-dedicated ()
"Toggle whether the current active window is dedicated or not"
(interactive)
(message
(if (let (window (get-buffer-window (current-buffer)))
(set-window-dedicated-p window
(not (window-dedicated-p window))))
"Window '%s' is dedicated"
"Window '%s' is normal")
(current-buffer)))
;; Press [pause] key in each window you want to "freeze"
(global-set-key [pause] 'toggle-window-dedicated)
и настройте переменную pop-up-windows
на nil
.
вы также можете использовать StickyWindows вместо функции, посвященной окну.
Ответ 2
Одна возможность состоит в том, чтобы выделить окно в буфер, используя set-window-dedicated-p
. Это не будет препятствовать изменению размера окна вручную, только защитите его от того, чтобы оно было зажато display-buffer
. Например,
(add-hook 'shell-mode-hook
(lambda ()
(interactive)
(set-window-dedicated-p (selected-window) 1)))
При необходимости замените shell-mode-hook
.
Ответ 3
Вы можете использовать победитель-режим, чтобы иметь возможность отменить изменения в размере окна.
Вы также можете явно сохранить и восстановить конфигурацию окна в регистрах.
Ответ 4
Этот тоже отлично работает (для emacs 24) https://lists.gnu.org/archive/html/help-gnu-emacs/2007-05/msg00975.html
(define-minor-mode sticky-buffer-mode
"Make the current window always display this buffer."
nil " sticky" nil
(set-window-dedicated-p (selected-window) sticky-buffer-mode))