Ankur Sethi
Ankur Sethi

Reputation: 3608

Ensure that, when working with split windows, the currently active Emacs window is always at least 80 characters wide

(I use the words "window" and "frame" in the same way the Emacs manual uses them.)

I like to split my Emacs frame vertically when I work because I like to see two buffers side-by-side. Since I have a small screen and I prefer a larger than usual font size, neither of the windows is large enough to show me even 80 characters per line. As I switch between windows, I find myself having to fiddle with their sizes to prevent my code from wrapping.

Is there a way Emacs can automatically make the currently active window at least 80 characters wide? I want that, whenever I switch to a window, Emacs should resize it in a way that I can comfortably see my code on a single line.

E.g, let's say this is the original split:

     ____________________
    |          |         |
    |          |         |
    |          |         |
    |          |         |
    |          |         |
    |          |         |
    |          |         |
     --------------------

Now I move my insertion point to the left window. Emacs should resize the window so that the setup looks like this:

     ____________________
    |             |      |
    |             |      |
    |             |      |
    |insertion    |      |
    |point        |      |
    |             |      |
    |             |      |
     --------------------

I've done editing the buffer in the left window. Now I move my insertion point to the right window. Emacs should resize the window so it looks like this:

     ____________________
    |       |           |
    |       |           |
    |       |           |
    |       |insertion  |
    |       |point      |
    |       |           |
    |       |           |
     --------------------

I'm certain I've seen some elisp that does exactly this, but I can't figure out the right incantations I should put into the Google Search box.

Upvotes: 4

Views: 263

Answers (1)

Bozhidar Batsov
Bozhidar Batsov

Reputation: 56665

Assuming you're using other-window (bound to C-x o by default) to switch between windows you can simply advice it like this:

(defadvice other-window (after other-window-now activate)
  (when (< (window-width) 80)
    (enlarge-window (- 80 (window-width)) t)))

That would automatically enlarge a window by (80 - it's current width columns), making it 80 columns wide.

Upvotes: 7

Related Questions