Pin Emacs buffers to windows (for cscope)

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.

Leave a Comment