为什么set-default-font会影响find-file-other-window?

jdi*_*zle 3 emacs fontconfig

我最近添加了这条线

(set-default-font "-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1")
Run Code Online (Sandbox Code Playgroud)

到我的.emacs文件.之后find-file-other-window总是打开一个新窗口而不是利用现有的窗口.为什么会这样呢!?我该如何解决?

我不明白所有这些font-config魔法是如何工作的,所以如果真的很明显我很抱歉.

编辑:我有一个非常大的分辨率,我的字体大小已经显着下降.是否find-file-other-window考虑了可用的字符空间?也许它正在决定,只要打开窗户就可以买得太多了.

Gil*_*il' 5

find-file-other-window最终调用display-buffer,它运行一个复杂的算法来决定是重用现有的窗口还是重新创建一个窗口.特别是,如果display-buffer决定需要创建或回收一个窗口,它会尝试调用split-window-preferred-function以拆分最大的窗口.默认情况下,split-window-preferred-functionsplit-window-sensibly,如果它们比更是愿意垂直分割窗口split-height-threshold的高线,或做不到这一点水平,如果他们超过split-width-threshold宽列.

它看起来像你想要的

(setq split-width-threshold nil)
(setq split-height-threshold nil)
Run Code Online (Sandbox Code Playgroud)

注意这个答案适用于GNU Emacs 23.早期版本没有水平分割.以后的版本可能会做不同的事情


找到这个的几种方法(没有直截了当):

  • 如果您猜测正在发生的事情被称为拆分窗口:M-x apropos RET split RET显示了许多变量和函数,您可能会发现哪些是相关的.或者,如果您猜测有一个选项(通常有),则C-h v split- TAB显示有前途的线索.
  • 对文件find-file-other-window的引用显示缓冲区.(你必须在Elma手册中找到这个详细程度;在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.