Управление окнами в Emacs

Я хочу достичь следующего, когда буфер отображается в GNU Emacs:

  1. это никогда не должно разделить мои окна;

  2. если буфер уже открыт в окне, он должен использовать его повторно, в противном случае он должен использовать текущее окно.


частичное решение

  • задание pop-up-windows до nil разрешит пункт 1;

  • задание same-window-regexps to '("^*") решит вторую часть точки 2, но это, в отличие от предыдущего.

23
задан cYrus
22.12.2022 17:44 Количество просмотров материала 3578
Распечатать страницу

2 ответа

я обнаружил, что можно настроить поведение функции display-buffer установив переменную display-buffer-function.

эта функция, кажется, делать то, что я хочу (конечно, он нуждается в некоторой очистки, но он работает):

(defun my-display-buffer (BUFFER-OR-NAME &optional NOT-THIS-WINDOW)
  (catch 'return
    ;; search the buffer in the existing windows
    (let ((windows (window-list)))
      (while (first windows)
        ;; found
        (if (eq (window-buffer (first windows)) BUFFER-OR-NAME)
            (throw 'return
                   ;; if minibuffer doesn't select the window
                   (if (eq (selected-window) (minibuffer-window))
                       (first windows)
                     (select-window (first windows)))))
        ;; next window
        (setq windows (rest windows))))
    ;; otherwise use current
    (if (eq (selected-window) (minibuffer-window))
        ;; if minubuffer
        (progn
          (select-window (minibuffer-selected-window))
          (switch-to-buffer BUFFER-OR-NAME)
          (select-window (minibuffer-window)))
      ;; if regular window
      (progn
        (switch-to-buffer BUFFER-OR-NAME)
        (selected-window)))))
3
отвечен cYrus 2022-12-24 01:32
  1. (setq pop-up-windows nil) кажется, делать то, что вы хотите.
  2. Я не думаю, что вы должны сделать здесь. По крайней мере, команды справки уже демонстрируют такое поведение.
1
отвечен Joseph Gay 2022-12-24 03:49

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх