Background
Used vim for 15+ years. Currently using Emacs + Evil + Cider (Clojure).
My Ideal Workflow (this part is not the question -- merely describing my ideal workflow)
Three vertical panes.
+---------+--------------------------+----------------------+
| | | |
| NeoTree | Main Editing Window | Eshell / Repl / Msgs |
| Win1 | Win2 | Win3 |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
+---------+--------------------------+----------------------+
Now, at this point, I want the following things:
Emacs ignore other window comands, i.e. ignore C-x 2, C-x 3, C-x 1
NeoTree never gets modified -- it stays as NeoTree.
"Main Editing Window" never gets "auto replaced" -- it only changes in response to direct commands by me: C-x f, C-x C-b, C-x b, or clicking on NeoTree
Everything else (msgs, anything that pops up, any other replacement) gets sent to my "Eshell / Repl / Msgs" window).
Quick way to switch the "Eshell / Repl / Msgs" window, i.e. C-c a = "make that window be eshell", C-c b = "make taht window repl", etc ...
I'm not even sure where to begin on this. Please send me proper suggestions. (I'm perfectly happy to read documentation).
Concrete Question
I want to tell emacs the following:
Do not ever create new windows/frames. Do not ever touch win1/win2 without my permission. If you ever want to show me more info, shove it to win3.
Win1 should always be NeoTree. Win2 should always be whatever I edit. I don't want new windows/frames ever created or split. I want everything new shoved into Win3.
M-x describe-function RET set-window-dedicated-p RET
– lawlist Nov 14 '16 at 15:18display-buffer-alist
andset-window-dedicated-p
, but not everything -- there will be exepctions – lawlist Nov 14 '16 at 16:42