2010-12-30 3 views
3

Недавно я добавил строкуПочему 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 всегда открывает новое окно вместо использования существующих окон. Почему это произойдет !? Как я могу это исправить?

Я не понимаю, как работает вся эта магия шрифта, так что если это действительно очевидно, мне жаль.

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

ответ

5

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) 

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


несколько способов, чтобы это выяснить (нет прямой):

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

от Бога. Ты гений, и я люблю тебя. – jdizzle

Смежные вопросы