Подтвердить что ты не робот

Как заставить этот кадр Emacs сохранять свой буфер и не изменять размер?

Мой кадр Emacs выглядит следующим образом:

+---------------------------+
|             |             |
|             |             |
|             |      B      |
|      A      |             |
|             |             |
|             |             |
|             |-------------|
|             |      C      |
+---------------------------+

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

4b9b3361

Ответ 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.