【问题标题】:Restricting buffers to popup in a particular window on emacs限制缓冲区以在 emacs 上的特定窗口中弹出
【发布时间】:2013-12-29 02:58:59
【问题描述】:

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

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

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

左边的窗口是我编码的地方,我们称之为绘图窗口。右上角的窗口,是弹出编译消息的地方,我们称它为信息窗口。右下窗口是我使用shell的地方,我们称之为shell窗口。当我使用 shell 窗口并按 <TAB> 进行补全建议时,*completions* 缓冲区将在我的绘图窗口中弹出,而不是在我的信息窗口中。

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

【问题讨论】:

  • 生成特殊缓冲区(如 Completions)的函数需要修改为使用 display-buffer 或其系列函数。
  • 切线,见winner-mode,我刚刚在这里评论过:stackoverflow.com/a/20809590/324105

标签: emacs window buffer


【解决方案1】:

我能想到的最简单的方法是将绘图窗口和外壳窗口专用于它们的缓冲区。如果你已经安装了 emacs-goodies,那么你可以使用 M-x dedicated-mode 来达到这个目的。

在绘图窗口和shell窗口是专用emacs的情况下,只使用信息窗口弹出新的缓冲区。

我自己使用添加到缓冲区菜单的菜单项:

(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])

【讨论】:

  • 谢谢!专用模式成功了...我只是使用 M-x dedicated-mode 将窗口修复到它的缓冲区,并使用 M-x dedicated-mode 取消修复它并在其中打开一个新文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多