Как предотвратить Emacs Dired от разделения кадра на более чем два окна?
В буфере Emacs Dired, если я перемещаюсь по имени файла и нажимаю o для dired-find-file-other-window
, dired успешно выдает желаемое поведение: открытие файла во вторичном окне.
Но если я затем наведу курсор на ВТОРОЕ имя файла и снова нажму o, dired снова разбивает фрейм и открывает файл в ТРЕТЬЕМ окне.
Как сделать так, чтобы я повторно использовал второе окно, чтобы у меня всегда было максимум два окна в кадре?
2 ответа
Поднять значение split-height-threshold
до такой степени, что это не сделает еще один раскол.
Возможно, вам придется поднять split-width-threshold
также - в случае, если Emacs считает, что лучше разделить таким образом, чем.
WRT вопросы в комментарии:
Значение для выбора IMO зависит от количества строк, отображаемых в окне. Давайте предположим, что отображаются 40 строк. Если окно разделено, осталось 20. Тогда порог "split-height-threshold" 15 должен предотвратить дальнейшее разделение. Предотвращение дальнейшего параллельного разделения должно работать соответствующим образом, просто рассмотрите отображаемые столбцы.
Кстати, можно ожидать, что способ адаптировать это динамически.
Пытался решить ту же проблему с помощью изменения значения split-width-threshold
, но обнаружил, что он часто перестает работать при изменении конфигурации монитора. Закончил писать совет для window-splittable-p
,
(setq split-width-threshold (- (window-width) 10))
(setq split-height-threshold nil)
(defun count-visible-buffers (&optional frame)
"Count how many buffers are currently being shown. Defaults to selected frame."
(length (mapcar #'window-buffer (window-list frame))))
(defun do-not-split-more-than-two-windows (window &optional horizontal)
(if (and horizontal (> (count-visible-buffers) 1))
nil
t))
(advice-add 'window-splittable-p :before-while #'do-not-split-more-than-two-windows)