Как сделать так, чтобы этот кадр Emacs сохранял свой буфер и не изменял размер? - PullRequest
22 голосов
/ 01 марта 2011

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

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

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

Ответы [ 4 ]

12 голосов
/ 03 марта 2011

Если вы не хотите, чтобы вас раздражали воровство и изменение размеров окна, добавьте следующие строки в ваш .emacs для окончательного решения, которое работает даже с такими библиотеками, как gud, которые пытаются открыть новый кадр, когда они могут не укради твои окна :

(см. этот ответ для получения информации о следующих 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 вместо функции, выделенной для окна.

11 голосов
/ 01 марта 2011

Одна возможность - выделить окно для его буфера, используя set-window-dedicated-p.Это не предотвратит изменение размера окна вручную, а только защитит его от засорения display-buffer.Например,

(add-hook 'shell-mode-hook
      (lambda ()
        (interactive)
        (set-window-dedicated-p (selected-window) 1)))

Замените shell-mode-hook при необходимости.

1 голос
/ 24 марта 2014

Этот тоже отлично работает (для 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))
1 голос
/ 01 марта 2011

Вы можете использовать Режим победителя , чтобы иметь возможность отменить изменения в размере окна.

Вы также можете явно сохранить и восстановить конфигурацию окна в регистрах .

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