3

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.

  • 1
    Welcome to Emacs.SE! You're asking about a basket of different things, which doesn't fit very well in the SE post model (i.e., one discrete question per post). Please consider splitting your post into several distinct questions, which will make it easier for people to help. – Dan Nov 14 '16 at 15:06
  • I won't be answering this, but from what I've read and from what I've experienced trying to get Emacs to behave (I wanted Sauron window on fixed position) its window management capabilities are limited. So I'm working on awesomewm configuration to work around that (will have consistent input method switch as a bonus). Something would always get in the way. – Roman Grazhdan Nov 14 '16 at 15:11
  • 1
    What you seek is semi-possible (kind-of / almost), but not with universal settings and would need to be adjusted accordingly based on whatever libraries and display you use on a daily basis. In short, it is an uphill battle -- things may change as your screen resolution changes; e.g., things will suddenly split a different way than what you have previously seen. Consider revising your question to address just one specific issue that has a finite answer -- e.g., "How do I programmatically achieve this 3-way view?" See also: M-x describe-function RET set-window-dedicated-p RET – lawlist Nov 14 '16 at 15:18
  • What @Dan said. Please edit the question to pose only one question. – Drew Nov 14 '16 at 15:23
  • 1
    The answer to the revised question is: This is not possible, sorry. Nothing is set in stone with Emacs. You cannot create a 100% ironclad window and/or frame setup. The best you can achieve is to customize whatever you use on a daily basis to behave as you desire -- this will be a custom solution tailored exclusively to you -- several functions will need to be modified/customized as needed, and this just depends on what libraries you are using. Some of what you seek can be achieved with the display-buffer-alist and set-window-dedicated-p, but not everything -- there will be exepctions – lawlist Nov 14 '16 at 16:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.