Почему set-default-font влияет на find-file-other-window?

Я недавно добавил строку

(set-default-font "-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1")

в мой файл.emacs. После этого find-file-other-window всегда открывает новое окно вместо использования существующих окон. Почему это случилось? Как я могу это исправить?

Я не понимаю, как работает вся эта магия font-config, поэтому, если это действительно очевидно, извините.

Изменить: У меня довольно большое разрешение, и мой размер шрифта значительно уменьшился. Есть ли find-file-other-window учитывать доступное пространство символов? Возможно, он решает, что у него так много места, что он может позволить себе просто открыть окна.

1 ответ

Решение

find-file-other-window в конечном итоге звонки display-buffer, который запускает сложный алгоритм, чтобы решить, следует ли повторно использовать существующее окно или сделать его и как. В частности, если display-buffer решает, что ему нужно создать или перезапустить окно, он пытается вызвать split-window-preferred-function разбить самое большое окно. По умолчанию, split-window-preferred-function является split-window-sensibly, который готов разделить окна по вертикали, если они больше split-height-threshold линий, или провалив их горизонтально, если они больше split-width-threshold колонны широкие.

Похоже, вы хотите

(setq split-width-threshold nil)
(setq split-height-threshold nil)

NB Этот ответ относится к GNU Emacs 23. Более ранние версии не имели горизонтального разделения. Более поздние версии могут действовать по-другому.


Несколько способов выяснить это (ни одного простого):

  • Если вы предполагаете, что то, что происходит, называется разделением окна: M-x apropos RET split RET показывает количество переменных и функций, и вы можете выяснить, какие из них актуальны. Или, если вы предполагаете, что есть вариант (часто есть), C-h v split- TAB показывает многообещающие ведет.
  • Документация для find-file-other-window ссылки, отображающие буферы. (Вы должны обратиться к руководству по Elisp для такого уровня детализации; в Emacs, C-h i m elisp RET вызывает руководство Elisp и i find-file-other-window RET приводит вас к документации для этой функции.) Менее ясно, что pop-to-buffer отрывок для чтения там; он ссылается на окно выбора, которое содержит искомую информацию.
  • C-h f find-file-other-window RET показывает встроенную документацию для функции. Это ссылки на display-buffer, Описание display-buffer не описывает его работу подробно, поэтому оттуда вы должны либо обратиться к руководству Elisp, как описано выше, либо изучить источник display-buffer нажав на window.el,
Другие вопросы по тегам