window-toggle-division

■具体的に何をするか
2分割したWindowの縦横を切り替える。

(defun window-toggle-division ()
  "ウィンドウ 2 分割時に、縦分割<->横分割"
  (interactive)
  (unless (= (count-windows 1) 2)
	(error "ウィンドウが 2 分割されていません。"))
  (let ((before-height (window-height (selected-window)))
		(other-buf (window-buffer (next-window (selected-window) nil))))
	(delete-other-windows)

	(if (= (window-height (selected-window)) before-height)
		(split-window)
	  (split-window-vertically))

	(switch-to-buffer-other-window other-buf)
	(other-window -1)))

これを其のまま使えないかなぁとか思ったけど、どうも使えない様子。何故か
(= (window-height (selected-window)) before-height)がいつもtに成っているような感じ。相当眠いので、何か勘違いしてそうな木もするけど。

チョット探してみたら
xyzzy カスタマイズ(Vz/Wz 風)
http://www.geocities.co.jp/SiliconValley-Sunnyvale/2892/custmize.html
ここにこんなのが。

(defvar vz_split_window_n 0)
(defun vz-split-window-n ()
  (interactive)
  (case vz_split_window_n
	(0
	 (progn
	   (delete-other-windows)
	   (split-window (- (floor (window-height) 2) 1))
	   (progn (other-window 1) (selected-window))
	   (next-buffer); other-buffer ではうまくいかない
	   (progn (other-window 1) (selected-window))
	   (setq vz_split_window_n 1)) )
	(1
	 (progn
	   (delete-other-windows)
	   (split-window (- (floor (window-width) 2) 1) t)
	   (progn (other-window 1) (selected-window))
	   (next-buffer)
	   (progn (other-window 1) (selected-window))
	   (setq vz_split_window_n 2)) )
	(2
	 (progn
	   (delete-other-windows)
	   (setq vz_split_window_n 0)) )
	)
  )

こんなのがあった。こっちは普通に使える。何となくこっちの方が便利そうだし。
C-x 3に割り当ててみた。