在emacs中使用两个帧时,如何防止编译缓冲区同时出现?

Sup*_*ric 26 emacs compilation window dot-emacs frame

我使用两个显示器,并经常使用两个框架打开的emacs; 每个监视器一个.每个框架被分成两个并排的窗口,如下所示:

 a | b   <-- frame 1 in monitor 1
-------
 c | d   <-- frame 2 in monitor 2
Run Code Online (Sandbox Code Playgroud)

当我在窗口a中点击"编译"按钮时,编译缓冲区在其旁边的缓冲区中打开.到现在为止还挺好:

 a | compilation
-----------------
 c |     d
Run Code Online (Sandbox Code Playgroud)

但是,如果我然后移动到窗口c来编辑一些东西,然后再次点击编译,窗口d也会访问编译缓冲区:

 a | compilation
------------------
 c | compilation
Run Code Online (Sandbox Code Playgroud)

所以现在我有一半的屏幕空间占用了同一个编译缓冲区的两个副本,想知道为什么我有两个显示器:)

当我的光标位于当前打开的编译缓冲区旁边的缓冲区中时,我可以通过认真地仅仅点击编译键来防止这种情况,但是我很早就打了'编译',而且我经常没有心思这样做.我觉得必须有一些我可以调整的东西.emacs所以我不应该这样做.

有什么建议?理想情况下,当我点击'compile'时,当前打开的编译缓冲区应该从之前的窗口移动到当前使用的窗口旁边的窗口.如果这太复杂了,我很容易解决让emacs 没有访问相邻窗口中的编译缓冲区,如果它已经在另一个窗口中打开了.

小智 28

(setq-default display-buffer-reuse-frames t)
Run Code Online (Sandbox Code Playgroud)

从文档:

非零意味着`display-buffer'应该重用帧.如果有问题的缓冲区已显示在框架中,请抬起该框架.

  • `这个变量从24.3开始就已经过时了; 在'display-buffer-alist'中使用'reusable-frames'alist条目 (4认同)