将Emacs缓冲区固定到windows(用于cscope)

将Emacs缓冲区固定到windows(用于cscope),emacs,cscope,Emacs,Cscope,为了我的日常工作,我住在Emacs。完全地我也变得非常依赖CScope来帮助我在代码中找到东西 通常,我在一个拆分中有两个窗口(C-x 3): 我使用右边的窗口作为代码缓冲区,左边的窗口作为CScope搜索缓冲区。当您执行CScope搜索并选择结果时,它会自动更新右侧窗口以显示结果所引用的缓冲区。这一切都很好,只是它让我失去了在我正在学习的其他缓冲区中的位置。有时候这没什么大不了的,因为[C-SU]让我回到了我曾经的地方 不过,最好是有3个这样的拆分窗口(左侧窗口中为[C-x 2]): 让左

为了我的日常工作,我住在Emacs。完全地我也变得非常依赖CScope来帮助我在代码中找到东西

通常,我在一个拆分中有两个窗口(C-x 3):

我使用右边的窗口作为代码缓冲区,左边的窗口作为CScope搜索缓冲区。当您执行CScope搜索并选择结果时,它会自动更新右侧窗口以显示结果所引用的缓冲区。这一切都很好,只是它让我失去了在我正在学习的其他缓冲区中的位置。有时候这没什么大不了的,因为[C-SU]让我回到了我曾经的地方

不过,最好是有3个这样的拆分窗口(左侧窗口中为[C-x 2]):

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


有人知道我是怎么做到的吗?

嗯,我决定不做一个声名狼籍的妓女,自己去寻找答案。我查看了Emacs wiki上显示的cscope.el,以及RHEL上随cscope RPM包提供的xscope.el


两人似乎都没有给我一条路去做我想做的事。方法可能是通过添加一个包变量(如
*browse buffer*
或其他什么)来编辑ELisp,如果用户第一次执行
[C-C-s g]
或其他操作时尚未初始化该变量,则只需初始化该变量,并始终将生成的代码显示在
*browse buffer*
中。然后用户可以将
*浏览缓冲区*
放在他想要的任何地方。

将其放在.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结果。

awesome!我知道这是可以做到的…我通常只是时间太紧,无法深入研究elisp api。谢谢棒 极 了我也遇到了同样的情况,但它发生在vc活动中,它将使用我宝贵的窗口。谢谢。照片已经不见了,但问题仍然完全相关。您是否介意更新它们,或者直接在文章中以ASCII格式绘制您的意思?我想我刚才问的问题可能和你们的类似。