2010-05-11 33 views
7

打开一个新窗口我最近从Carbon Emacs(v22.3)升级到vanilla Emacs 23.2(从http://www.emacsformacosx.com)。在编译项目时,在Carbon Emacs上,框架被分成两部分,在顶部窗口中使用当前源文件/ SConscript,在底部窗口中使用编译输出。我打CX`导航到编译输出的第一个警告或错误,它会取代任何在与源顶部窗口文件中的错误或警告在不在。Emacs 23.2为每个编译错误/警告导航到

在Emacs的23.2,但,打开第三个窗口,在窗口的上半部分打开两个窗口(垂直分开),并在窗口下半部分的窗口中编译输出。我如何告诉Emacs不要打开一个新窗口,而是在框架中现有的非编译器输出窗口中打开代码?


对我刚才注意到的行为稍作进一步澄清。如果在包含源文件或SConscript文件的缓冲区处于活动状态时打开了C-x`,则不会打开新窗口。只有当我手动浏览*编译*缓冲区并按下输入错误或警告时,或者在出现第三个缓冲区窗口时,鼠标点击警告时才会这样。

回答

4

next-error功能中使用的功能是​​,而该功能又使用split-window-sensibly。您可以通过调整变量split-width-thresholdsplit-height-threshold来控制split-window-sensibly的行为。

在你的情况下,它是太小的split-width-threshold。在我的emacs 23.1中,它设置为160.只需将其设置为更大的数字,并且应该解决问题:

(setq split-width-threshold 200) 
2

我不能重现这个问题我自己,但你可以尝试以下操作:

(setq split-width-threshold nil) 

这告诉display-buffer从来没有窗户水平分割,即使他们是相当广泛。还有一个split-height-threshold变量,它的处理方式相似。检查这些变量的当前值可能表明它们是否与您所看到的行为有关。

要检查的最后一件事:如果您已经定义了自己的display-buffer-function,那可能会为您做出这些决定。