限制缓冲区以在emacs上的特定窗口中弹出

时间:2013-12-27 19:02:04

标签: emacs window buffer

如何将某些缓冲区重定向到特定窗口中的弹出窗口?例如,当您使用shell时,按<TAB>*completions*缓冲区将弹出(通常)在右侧窗口...但是如何使此缓冲区始终弹出另一个窗口?

我更喜欢不涉及安装新库的解决方案(尽管编写我自己的elisp函数会很整洁)。

我问这个,因为当我使用emacs时,O喜欢把它分成3个窗口:

左侧窗口是我编码的地方,让我们称之为绘图窗口。右上方的窗口是弹出编译消息的地方,我们称之为信息窗口。右下窗口是我使用shell的地方,我们称之为shell窗口。当我使用shell窗口,并按<TAB>完成提案时,*completions*缓冲区将在我的绘图窗口中弹出,而不是在我的信息窗口中。

直到现在,当我进入我的绘图窗口时,我尝试按q,但这变得很烦人,因为它不会总是返回我正在使用的代码,所以我必须C-right直到我找到我的代码或Cx b(如果我能记住我正在编辑的文件的名称)。

1 个答案:

答案 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])