如何控制在Emacs中用于新内容的窗口?

如何控制在Emacs中用于新内容的窗口?,emacs,Emacs,我经常在一个框架内小心地排列多个窗口 但是,某些命令,如M-x man-RET将抓取一个可见窗口以显示其自己的内容。有时这很烦人,因为被拿走的窗户是我需要让它可见的 e、 我在屏幕上有三个窗口,一个有用的源代码窗口和两个无用的窗口。在检查man页面时,我想保持源代码窗口可见。但Emacs通常只是删除了新打开的手册页的代码窗口 我能想到的一种方法是显示每个窗口的(按时间顺序)打开顺序,这样我就可以将重点放在第n个窗口上,并确信Emacs将抓住第(n+1)个窗口来获取新内容 是否有方法显示该顺序,例

我经常在一个框架内小心地排列多个窗口

但是,某些命令,如
M-x man-RET
将抓取一个可见窗口以显示其自己的内容。有时这很烦人,因为被拿走的窗户是我需要让它可见的

e、 我在屏幕上有三个窗口,一个有用的源代码窗口和两个无用的窗口。在检查
man
页面时,我想保持源代码窗口可见。但Emacs通常只是删除了新打开的手册页的代码窗口

我能想到的一种方法是显示每个窗口的(按时间顺序)打开顺序,这样我就可以将重点放在第n个窗口上,并确信Emacs将抓住第(n+1)个窗口来获取新内容

是否有方法显示该顺序,例如在每个窗口的模式行中


还是有其他更好的方法来控制新窗口的显示?

晚会有点晚了,但正如评论中所讨论的,使用专用窗口是控制新内容显示位置的一个好方法(+1到@lawlist用于显示,到@phils用于提及切换!)

我很确定您现在可以实现一个命令来切换专用性,但由于我手头有这方面的代码,我还是要分享它:

(取消切换窗口专用()
“控制是否允许Emacs显示另一个
当前窗口中的缓冲区。“
(互动)
(信息
(如果(let(窗口(获取缓冲区窗口(当前缓冲区)))
;set-window-dedicated-p返回作为
;第二个参数,因此可以用作if的条件:
(设置-窗口-专用-p窗口(非(窗口-专用-p窗口)))
“%s:不能碰这个!”
“%s已准备就绪。”)
(当前缓冲区)
(全局设置键(kbd“C-C d”)'切换窗口专用)

现在,在多窗口设置中,您只需在每个要“保护”的窗口中按C-C d键即可。

我将把
display buffer alist
的示例用法加入到组合中,因为它在注释中提到过,并且确实是控制缓冲区显示方式和位置的通用机制(尽管,正如Drew所指出的,这绝非微不足道)

从变量本身的帮助开始:
C-hv
display buffer alist
RET

从那里,您将获得有关
显示缓冲区的帮助,毫无疑问,您将了解其中的复杂性:)

在任何情况下,以下都是使用自定义函数决定如何显示名为
*Buffer List*
的缓冲区的示例

您可以很容易地看到,如果您可以编写一个函数,该函数可以计算出如何在希望的位置显示缓冲区,那么您可以使用
display buffer alist
来实现它

(取消我的显示缓冲区弹出相同宽度窗口(缓冲区列表)
“强制垂直窗口拆分的`显示缓冲区'操作。
请参见“合理拆分窗口”和“显示缓冲区弹出窗口”
(let((分割宽度阈值为零)
(拆分高度阈值0)
(显示缓冲区弹出窗口缓冲区列表)))
(添加到列表“显示缓冲区列表”
“(“\\*缓冲区列表\\*”我的显示缓冲区弹出相同宽度的窗口))
有关行动职能的关键报价如下:

每个这样的函数都应该接受两个参数:缓冲区到 显示和一个列表。基于这些论点,它应该 显示缓冲区并返回窗口


使用
显示缓冲区
窗口中的相关系列的功能。el
通常使用专用窗口:尽管本手册中的以下链接更倾向于编写自己的代码以使用
显示缓冲区
系列功能,演示控制哪个窗口显示特定缓冲区所需的内容可能会有所帮助:为了控制特定缓冲区,这里有一个链接,指向使用
显示缓冲区列表
:+1到@lawlist来提及专用窗口的示例。(仅对不同的缓冲区使用单独的帧是另一种解决方案,例如非零的弹出帧
等),但尝试使用显示缓冲区列表来控制这种情况是一个沼泽。。。(而且似乎每年都在变化,因为他们试图修复更多的破损或根本不起作用的案例。)另一方面,也许@modeller将是一个一劳永逸地掌握
显示缓冲区列表
和驯服缓冲区/窗口关联的人(并因其努力和成就而获得诺贝尔奖)。添加一个绑定来切换窗口的“专用”状态绝对是非常有用的。结合使用
winner模式
,您可以轻松地将窗口配置恢复到以前的状态,这样您就可以解决这个问题了。@phils,谢谢您的提示。我确实安装了赢家模式。确实方便。只是在lawlist和DrewI建议使用
作为绑定之前,没有听说过专用状态。对于我的键盘布局,这是“向上翻页”上方的“暂停/中断”键。它已经够远了,我从来没有在其他任何地方使用过它,而且它似乎是一个很好的功能记忆法:)