I've run into this problem as well. My solution, which I can personally recommend, is to use the purpose package.
It allows you to dedicate specific windows to specific "purposes" which each have user-configurable associated modes; for instance, the edit
purpose might have prog-mode
associated with it, the view
purpose might have `info-mode associated with it, etc. Any time a new buffer is to be opened, if there is a window currently dedicated to that purpose, Emacs will force said buffer to be opened in that dedicated window.
As an example, my default Emacs "workspace" consists of one large edit
window, one comm
window for IRC, and two admin
windows -- one for RSS and another for email.
Highly recommend.
sr-speedbar.el
library for the termsplit-window
pulls up two results: emacswiki.org/emacs/sr-speedbar.el I personally like option (C) -- modify the source and make it do what you want. Instead ofsplit-window
..., perhaps you want to usedisplay-buffer
to select an existing window? . . . (modifying the code as needed to accommodate that new revision). – Winther