在emacs中使用两个框架时,如何避免编译缓冲区同时出现在两个框架中?

27

我使用两个显示器工作,通常在每个显示器上都打开一个emacs frame。每个frame都会分成两个并排的窗口,就像这样:

 a | b   <-- frame 1 in monitor 1
-------
 c | d   <-- frame 2 in monitor 2
当我在窗口a中点击“编译”按钮时,编译缓冲区会在其旁边的缓冲区中打开。
 a | compilation
-----------------
 c |     d
然而,如果我转移到窗口 c 编辑一些内容,然后再次编译,窗口 d 也会访问编译缓冲区。
 a | compilation
------------------
 c | compilation

现在,我有屏幕的一半空间被相同的编译缓冲区占据,让我怀疑我为什么要用两个显示器 :)

我可以通过只在当前打开的编译缓冲区旁边的缓冲区中放置光标时才刻意按下编译键来防止这种情况发生,但我经常很早就开始频繁地进行编译,以至于我通常没有这样做的意识。我觉得必须有一些 .emacs 中可以调整的内容,所以我不需要这样做。

有什么建议吗?理想情况下,当我按下“编译”时,当前打开的编译缓冲区应该从其先前的窗口移动到当前使用的窗口旁边的窗口。如果太复杂,我可以轻松地将 Emacs 访问相邻窗口中的编译缓冲区,如果它已在另一个窗口中打开。


1
很棒的问题 - 以前从未考虑过在那种设置下使用emacs! - cristobalito
1个回答

29
(setq-default display-buffer-reuse-frames t)

根据文档:

非nil表示“display-buffer”应该重用框架。 如果涉及的缓冲区已经在一个框架中显示,则提高该框架。


4
自 Emacs 24.3 版本以来,这个变量已经被废弃了。请在 'display-buffer-alist' 中使用一个可重复使用的帧(reusable-frames)关联列表项。 - cYrus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,