如何将某些缓冲区重定向到特定窗口中的弹出窗口?例如,当您使用shell时,按<TAB>
,*completions*
缓冲区将弹出(通常)在右侧窗口...但是如何使此缓冲区始终弹出另一个窗口?
我更喜欢不涉及安装新库的解决方案(尽管编写我自己的elisp函数会很整洁)。
我问这个,因为当我使用emacs时,O喜欢把它分成3个窗口:
左侧窗口是我编码的地方,让我们称之为绘图窗口。右上方的窗口是弹出编译消息的地方,我们称之为信息窗口。右下窗口是我使用shell的地方,我们称之为shell窗口。当我使用shell窗口,并按<TAB>
完成提案时,*completions*
缓冲区将在我的绘图窗口中弹出,而不是在我的信息窗口中。
直到现在,当我进入我的绘图窗口时,我尝试按q
,但这变得很烦人,因为它不会总是返回我正在使用的代码,所以我必须C-right直到我找到我的代码或Cx b(如果我能记住我正在编辑的文件的名称)。
答案 0 :(得分:1)
我能想到的最简单的方法是将绘图窗口和shell窗口专用于缓冲区。如果您已经安装了emacs-goodies,那么您可以使用 M-x专用模式来实现此目的。
如果绘图窗口和shell窗口是专用的,则emacs仅使用信息窗口弹出新的缓冲区。
我自己使用我添加到Buffers菜单中的菜单项:
(defun window-dedicated-toggle ()
"Toggle wether window is dedicated to buffer or not."
(interactive)
(message
(if (window-dedicated-p)
(progn
(set-window-dedicated-p nil nil)
"Window not dedicated.")
(progn
(set-window-dedicated-p nil t)
"Window dedicated."))))
(easy-menu-add-item nil '("Buffers") ["Toggle Dedicate Window To Buffer" window-dedicated-toggle t])