I'm regularly compiling some C programs and one thing is annoying : after I've compiled, I'm opening a shell with M-x shell ./foo, but the shell open in place of the source code's window.
I would like the shell buffer to open in place of the compilation window, which I don't really need anymore. Otherwise, it's an overkill.
I've read about this topic open buffer in a specified frame but my emacs lisp competence are not that great and I can't adapt it to my case.
Thanks in advance! I guess I'm not the only one it can help.
EDIT
I've added a screenshot to make things clearer.
Let's call the above window "A" and the below "B". When I call the shell, i.e M-x shell (I rather use M-x term but that the same here), A has the focus, which is probably the reason why the shell window open in place of A. I want it to open in place of A (originally the compilation window).

M-x shellis A or B; after callingM-x shell, B should become*shell*or A should become*shell*. Focus should be in the*shell*buffer (window A or B) when done. – lawlist Nov 02 '16 at 15:58advice, thedisplay-buffer-alist,special-display-regexps, etc. If it were me, I would just copy theshellfunction and rename it to something likemy-shelland I would change(pop-to-buffer buffer)to whatever floats my boat -- e.g.,(switch-to-buffer buffer)assuming that I am in the window that I want to contain the*shell*buffer when I'm done typingM-x my-shell. I suspect there are already several threads that suggest the other three (3) above-mentioned alternatives. – lawlist Nov 02 '16 at 16:11term, but it is reversed -- since the functiontermuses(switch-to-buffer "*terminal*")and perhaps you want(pop-to-buffer "*terminal*"). To read aboutpop-to-buffer, typeM-x describe-function RET pop-to-buffer RET: "Select buffer BUFFER in some window, preferably a different one. BUFFER may be a buffer, a string (a buffer name), or nil. If it is a string not naming an existent buffer, create a buffer with that name. If BUFFER is nil, choose some other buffer. Return the buffer." – lawlist Nov 02 '16 at 16:17M-x find-function RET term RET. Copy the entire 15-line longtermfunction to your.emacsorinit.elfile, change the function name fromtermtomy-term, change(switch-to-buffer "*terminal*")to(pop-to-buffer "*terminal*"), and save your.emacsorinit.elfile. Either evaluate the function, or evaluate the entire buffer, or simply restart Emacs. Then try it out withM-x my-term– lawlist Nov 02 '16 at 16:31gcc foo.c -o foo && ./fooand then, if the compilation succeeds the command will be run and you'll get the output in the compilation buffer. – stevoooo Mar 30 '17 at 11:36