In emacs I use ibuffer to get a dired like list of all my open buffers. Because it’s often quite inconvenient to split emacs windows by hand and assign them the right buffers I came up with this idea: Why not mark some buffers in Ibuffer (with m) and then run a function which splits the windows itself and assigns the marked buffers to them.
So here’s the function:
(defun th-ibuffer-view-marked-buffers (horiz) "Open the marked buffers -- each in a separate window. By default the windows will be created by splitting the current window vertically, or horizontally if HORIZ is not nil." (interactive "P") (let ((buffers (ibuffer-marked-buffer-names))) (dotimes (var (1- (length buffers))) (if horiz (split-window-horizontally) (split-window-vertically)) (switch-to-buffer (nth var buffers)) (other-window 1)) (switch-to-buffer (car (last buffers))) (balance-windows)))
If you call it with a prefix arg it will split the windows horizontally, else it splits vertically.
ARGH!!! Now that I’ve written this fantastic function I found out that ibuffer-do-view and ibuffer-do-view-horizontally do exactly what my function does. Well, at least it was a nice quick elisp hack… :-)
The blog entry Conveniently save and restore frame configurations is related.
UPDATE: Hah, my version is better, because ibuffer-do-view and ibuffer-do-view-horizontally destroy the current window configuration. :-)