Emacs:为命令输出定义目标窗口

6

我厌倦了emacs会在窗口中输出信息,而且还时不时出现。我希望在emacs框架中有几个窗口,每个窗口都专门用于某个特定的目的。例如,

ECB panels |  Editor 1 | Editor 2 |  Bookmarks+
------------------------------------------------
"Messages" (output buffer)

因此,当我运行 M-x compile 时,我希望输出始终进入“Messages”中。同样,在运行 M-x magit-status 时,我也希望在“Messages”中看到结果。单击书签或按下 C-x r b 应该打开文件并将光标定位于编辑器1中。
我尝试了一些LISP代码段来“锁定”窗口以防止更改,但当所有窗口都被“锁定”时,Emacs会出现错误,因为它找不到可用的窗口来放置新的输出。这个令人讨厌的缓冲区交换特性可能是 Emacs 回归到 80x25 字符终端时代的产物。
我从未见过 ECB 窗口被覆盖,所以肯定有方法可以解决。
2个回答

2
您明确要求专用窗口。好的,Emacs恰好有这个功能:专用窗口C-h r g dedicated windows告诉您几乎所有您需要知道的内容。
但是还可以查看special-display-buffer-namesspecial-display-regexps --- 或者如果您是 masochist,请使用display-buffer-alist来做同样的事情。
使用display-buffer-alist,您原则上可以做任何您想象得到的事情,包括将您的内衣绑成结并点燃它。
(我只是将special-display-regexps设置为("[ ]?[*][^*]+[*]")。)

看起来 display-buffer-alist 是未来的趋势,因为在 Emacs 24.3 中,special-display-buffer-namesspecial-display-regexps 都被标记为“过时”。 - Carl Groner
是的,我知道,相信我。这并不意味着这是唯一的方式或最好的方式,特别是对于像这样简单的事情。但是请随意使用display-buffer-alist--这就是我提到它的原因。;-) 至少在24.3中,您仍然可以在两个手册中找到special-display的文档--有很多。所有这些都已经消失在Emacs 24中了。"On n'arrete pas le progres..." - Drew
1
一个专门的窗口确实可以用于他的书签窗口,但不能用于他的输出窗口,因为他想将该窗口专门用于各种缓冲区,而Emacs的“专用窗口”仅限于单个缓冲区。 - Stefan
@Stefan:同意,说得好。他不想要Emacs意义上的“专用窗口”。 - Drew

0
在打开一个窗口之前,请调用lockon-window。再次调用以取消所有窗口的专用状态。将所有内容发送到window:Message很容易设置;但是,如果不调用lockon-window,从window:Bookmarks+向window:Editor-1显示缓冲区太困难了。我希望slide-window能够提供帮助。

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