I ran into this problem. My solution, which I can personally recommend, is to use the purpose package.
It allows you to select specific windows for specific "goals", each of which has user-configurable modes; for example, edit may have prog-mode associated with it, for the purpose of view may be an information mode associated with it, etc. At any time when a new buffer should be opened, if there is currently a window dedicated to this goal, Emacs will force the buffer to be open in this highlighted window.
As an example, my default Emacs workspace consists of one large edit window, one comm window for IRC and two admin windows for RSS and another for email.
Highly recommend.
source share