Pin Emacs buffers to windows (for cscope)

前端 未结 2 544
名媛妹妹
名媛妹妹 2020-11-30 00:24

For my day job, I live in Emacs. Utterly. I also have become pretty dependent on CScope to help me find things in the code.

Normally, I have 2 windows in a split (

相关标签:
2条回答
  • 2020-11-30 00:33

    Put this in your .emacs file:

    ;; 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)))
    

    Then bind it to some key - I use the Pause key:

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

    And then use it to "dedicate" the window you want locked. then cscope can only open files from its result window in some OTHER window. Works a charm. I specifically use it for exactly this purpose - keeping one source file always on screen, while using cscope in a second buffer/window, and looking at cscope results in a third.

    0 讨论(0)
  • 2020-11-30 00:36

    Well, I decided to not be a reputation-whore and find the answer myself. I looked in cscope.el as shown on the Emacs wiki, as well as the xcscope.el that comes with the cscope RPM package on RHEL.

    Neither appear to give a way to do what I'm wanting. The way is probably to edit the ELisp by adding a package variable like *browse-buffer* or something and just initialize that variable if not already initialized the first time the user does [C-c C-s g] or whatever, and always have the resulting code shown in *browse-buffer*. Then the user can put the *browse-buffer* wherever he wants it.

    0 讨论(0)
提交回复
热议问题