对于我的日常工作,我住在Emacs.完全.我也非常依赖CScope帮助我在代码中找到东西.
通常情况下,我在分割中有2个窗口(Cx 3): alt text http://bitthicket.com/files/emacs-2split.JPG
我使用右侧窗口作为代码缓冲区,使用左侧窗口作为CScope搜索缓冲区.当您执行CScope搜索并选择结果时,它会自动更新右侧窗口以显示结果引用的缓冲区.这一切都很好,除了它导致我在我正在研究的其他缓冲区中失去我的位置.有时这并不重要,因为[Cs u]让我回到原来的位置.
然而,更好的是拥有3个这样的分割窗口(左侧窗口中的[Cx 2]): alt text 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)))
然后将它绑定到某个键 - 我使用Pause键:
(global-set-key [pause] 'toggle-window-dedicated)
然后用它来"专用"你想要锁定的窗口.然后cscope只能在某个OTHER窗口的结果窗口中打开文件.有魅力.我特意将它用于此目的 - 将一个源文件始终保留在屏幕上,同时在第二个缓冲区/窗口中使用cscope,并在第三个中查看cscope结果.