我的日常工作是使用 Emacs。完全如此。我也变得非常依赖 CScope 来帮助我在代码中查找内容。

通常,我有 2 个窗口(C-x 3):替代文本 http://bitthicket.com/files/emacs-2split.JPG

我将右侧窗口用于代码缓冲区,将左侧窗口用于 CScope 搜索缓冲区。当您执行 CScope 搜索并选择结果时,它会自动更新右侧窗口以显示结果引用的缓冲区。这一切都很好,只是它让我失去了我正在研究的其他缓冲区的位置。有时这没什么大不了的,因为 [C-s u] 让我回到原来的位置。

不过,更好的是有 3 个分割窗口,如下所示(左侧窗口中的 [C-x 2]):替代文本 http://bitthicket.com/files/emacs-3split.jpg

让左下窗口包含 CScope 搜索缓冲区,左上窗口成为 CScope 更新的唯一缓冲区。这样,我可以看到我的 CScope 搜索并在代码中导航,而不会丢失我关注的缓冲区。

有人知道我该怎么做吗?

有帮助吗?

解决方案

将其放入您的 .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)))

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

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

然后用它来“专用”您想要锁定的窗口。那么 cscope 只能在其他窗口中打开其结果窗口中的文件。很有魅力。我专门将它用于此目的 - 将一个源文件始终显示在屏幕上,同时在第二个缓冲区/窗口中使用 cscope,并在第三个缓冲区/窗口中查看 cscope 结果。

其他提示

好吧,我决定不再做一个名誉妓女,自己去寻找答案。我查看了 Emacs wiki 上显示的 cscope.el,以及 RHEL 上 cscope RPM 包附带的 xcscope.el。

似乎都没有提供一种方法来完成我想要的事情。方法可能是通过添加包变量来编辑 ELisp,例如 *browse-buffer* 或其他东西,如果用户第一次初始化该变量尚未初始化,则只需初始化该变量 [C-c C-s g] 或其他什么,并且始终将结果代码显示在 *browse-buffer*. 。然后用户可以将 *browse-buffer* 无论他想要在哪里。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top