Pin Emacs缓冲到窗口(用于cscope)

时间:2008-09-04 13:31:58

标签: emacs cscope

对于我的日常工作,我住在Emacs。完全。我也非常依赖CScope来帮助我找到代码中的内容。

通常情况下,我在分割中有2个窗口(C-x 3): alt text http://bitthicket.com/files/emacs-2split.JPG

我使用正确的窗口代码缓冲区和左侧窗口代表CScope搜索缓冲区。当您执行CScope搜索并选择结果时,它会自动更新右侧窗口以显示结果引用的缓冲区。这一切都很好,除了它导致我在我正在研究的其他缓冲区中失去我的位置。有时这并不重要,因为[C-s u]让我回到原来的位置。

然而,更好的是有3个这样的分割窗口(左侧窗口中的[C-x 2]): alt text http://bitthicket.com/files/emacs-3split.jpg

左下窗口包含CScope搜索缓冲区,左上窗口是CScope唯一更新的缓冲区。这样,我可以看到我的CScope搜索并浏览代码而不会丢失我关注的缓冲区。

任何人都知道如何做到这一点?

2 个答案:

答案 0 :(得分:35)

将它放在您的.emacs文件中:

;; Toggle window dedication

(defun toggle-window-dedicated ()

"Toggle whether the current active window is dedicated or not"

(interactive)

(message 

 (if (let (window (get-buffer-window (current-buffer)))

       (set-window-dedicated-p window 

        (not (window-dedicated-p window))))

    "Window '%s' is dedicated"

    "Window '%s' is normal")

 (current-buffer)))

然后将其绑定到某个键 - 我使用Pause键:

(global-set-key [pause] 'toggle-window-dedicated)

然后用它来“专注”你想要锁定的窗口。然后cscope只能在某个OTHER窗口的结果窗口中打开文件。有魅力。我特意将它用于此目的 - 将一个源文件保留在屏幕上,同时在第二个缓冲区/窗口中使用cscope,并在第三个中查看cscope结果。

答案 1 :(得分:0)

好吧,我决定不再是名声妓女,而是自己找到答案。我查看了Emacs wiki上显示的cscope.el,以及RHEL上cscope RPM软件包附带的xcscope.el。

似乎没有办法做我想要的事情。方法可能是通过添加像*browse-buffer*之类的包变量来编辑ELisp,如果在用户第一次执行[C-c C-s g]或其他任何事情时尚未初始化那么只是初始化该变量,并且总是得到结果代码显示在*browse-buffer*中。然后,用户可以将*browse-buffer*放在他想要的任何地方。