Splitting Erc Windows Sanely
I wish I had one emacs to rule them all


If you haven’t noticed from all my grumpiness, I recently moved from Nicaragua, where I had two massive 30 inch monitors, arranged in portrait mode, that I wrote on. I liked ‘em.

I’ve had to move back to using a laptop with a secondary display, both in landscape mode, which means that I can’t see a whole page of text.

With either screen formatted in 80 columns in a font I can read comfortably… I have about 30% of each screen’s space horizontally left over for something else, like chat or my agenda… anything, other than ads! Something, productive… whatever it may be.

Maybe chat?

I’d written some elisp a couple years ago that made chatting with multiple people inside of Emac’s ERC client work better in landscape mode, which I just I sat down and dug up:

<p>(defvar last-split-type t)</p>

<p>(defun split-window-p () Determine if a window can be split
  (interactive)
  (if (> 5 (window-height)) t))</p>

<p>(defun split-window-sanely () SPLIT A WINDOW SANELY
  (interactive)
  (if last-split-type
         (progn
           (setq last-split-type (not last-split-type)) ;; globals bad! FIXME
           (split-window-horizontally))
    (if (split-window-p) (split-window)
      (progn
    (select-window (get-largest-window)) ;; or get-lru-window
    (split-window) ;; If we can’t succeed, just keep erroring out
    )
      )))</p>

<p>;; Tile all servers</p>

<p>(defun erc-arrange-session-sanely ()
  Open a window for every non-server buffer related to `erc-session-server.
All windows are opened in the current frame.
  (interactive)
  (unless erc-server-process
    (error No erc-server-process found in current buffer))
  (let ((bufs (erc-buffer-list nil erc-server-process)))
    (when bufs
      (delete-other-windows)
      (setq last-split-type t)
      (switch-to-buffer (car bufs))
      (setq bufs (cdr bufs))
      (while bufs
    (split-window-sanely)
;;  (other-window 1) ;; with this we get a lovely spiral on bottom right
;;  (other-window) ;; with this we get a lovely spiral on top left
        (switch-to-buffer (car bufs))
        (setq bufs (cdr bufs))
        (balance-windows))
      (balance-windows))))</p>

What I mostly want right now is the tiling facility I get out of the awesome window manager where you can have a primary window (eating 80 columns!) and two or more secondaries, of any application.

The above piece of code helps a bit, but I’m strongly thinking I’m going to end up turning the darn laptop on its side again. Eventually I hope to pair up a pad of some kind - velcroed in portrait mode to the wall - and a GOOD keyboard, and get off the laptop entirely.

(My dream of switching to working on a pad, whenever a good android based one ships, is in part, why I am so vigorously exploring low resource organizational systems like ikiwiki.

Emacs works JUST great on a 1.2Ghz Arm box - and I look forward, very much, to the day where I don’t have to listen to a fan all day and still be able to write, code, and work.

I can’t really wrap my brain around elisp today. There’s too much C in my head.

Find me elsewhere.

Best of the blog Uncle Bill's Helicopter - A speech I gave to ITT Tech - Chicken soup for engineers
Beating the Brand - A pathological exploration of how branding makes it hard to think straight
Inside the Internet Mind - trying to map the weather within the global supercomputer that consists of humans and google
Sex In Politics - If politicians spent more time pounding the flesh rather than pressing it, it would be a better world
Getting resources from space - An alternative to blowing money on mars using NEAs.
On the Columbia - Why I care about space
Authors I like:
Doc Searls
Jerry Pournelle
The Cubic Dog
David Brin
Charlie Stross
Eric Raymond
Anonymous
WikiLeaks
The Intercept
Chunky Mark
Brizzled
Dan Luu's rants about hardware design
Selenian Boondocks
Transterrestial Musings
Callahans

February 10, 2011
467 words


Tags
latency usability emacs