One element of Emacs’s behavior that annoyed me for quite a while is
Emacs’s handling of windows (or rather, the natural consequence of
having multiple windows which arrive at various times). Often I end up
with a random window that I really don’t want to be there. Usually the
window is occupied by a temporary buffer (or something like
which has outstayed its welcome.
In most cases point is not in the window, so I have to switch to the other window and then kill the buffer with C-x o C-x k RET. But then I still have the window sitting around occupying space in front of the code I was actually trying to look at. So next I eliminate the window with C-x 0.
You see why this is annoying. I’m using seven keystrokes (C-x o C-x k RET C-x 0) just to clean up the mess from a temporary buffer. Of course this is Emacs, so a solution is only an elisp hack away. So I defined two new functions which relieve my woes:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
I bind these in place of the original delete-window (C-x 0) and delete-other-windows (C-x 1):
My functions work exactly as the built-ins they replace unless they are given a prefix argument (in fact they call the original functions). So now, if point is in a window I don’t want, which contains a buffer I don’t want, all I have to do is C-u C-x 0 and I’m back to my original work. Or, if my cursor is sitting in my original code, and the other buffer is the problem, I type C-u C-x 1. It’s natural enough that I’d like to see it in the default Emacs distribution.