почему set-default-font влияет на find-file-other-window? - PullRequest
3 голосов
/ 30 декабря 2010

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

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

5 голосов
/ 31 декабря 2010

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)

N.B. Этот ответ относится к 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.
...