横のものを縦にもする

| コメント(0) | トラックバック(0)
emacs ウィンドウを上下に分けて使うことは普通のことだと思う。 (split-window)

ごくごくたまーに縦に割りたいときがある、ソースを見比べたいときとか。
でも、キーバインドなんだっけ? に始まり、(1)一度 split を止めて (2)縦割りにして (3)other-buffer に移動し (4)バッファを選択し直す。
というけっこう面倒な手順が必要になると思う。 (もしもっと簡単な方法があったら教えて欲しい)

そこでこのマクロ。横→縦→横 とトグルして split の方向を変えます。
(defun ma:toggle-v-h-windows ()
  "change split windows set"
  (interactive)
  (let* ((wintree (window-tree))
		 (winlst (nthcdr 2 (car wintree)))
		 (h-or-v (car (car wintree)))
		 (buflst ()) bufcnt (lcnt 1) (eflg t))
	(mapcar (lambda (w)
			  (if (not (eq (type-of w) 'window)) (setq eflg nil)))
			winlst)
	(if eflg
		(progn
		  ;; get buffer list
		  (mapcar (lambda (w)
					(push (window-buffer w) buflst))
				  winlst)
		  (setq buflst (reverse buflst))
		  ;;
		  (setq bufcnt (length buflst))
		  (if (>  bufcnt 1)
			  (progn
				(delete-other-windows)
				(if h-or-v
					(while (> bufcnt lcnt)
					  (split-window-horizontally) ;h
					  (setq lcnt (1+ lcnt)))
				  (while (> bufcnt lcnt)
					(split-window-vertically) ;v
					(setq lcnt (1+ lcnt))))
				;;
				(mapcar (lambda (b)
						  (switch-to-buffer b)
						  (other-window 1))
						buflst)
				;;
				(balance-windows)
				))
		  )
	  (message "cannot change window."))))

;;(define-key my-key-map "9" 'ma:toggle-v-h-windows)
ちなみに僕は、my-key-map に Ctl-tab を指定してある。(最下行コメント部分)
以前貼った、ウィンドウ入れ替えと合わせて、
  • C-<tab>-0 で入れ替え
  • C-<tab>-9 で方向変え
  • となる。意外と使うんですこれが。

    トラックバック(0)

    トラックバックURL: http://kuraku.net/mt426/mt-tb.cgi/967

    コメントする

    Profile

    ウェブページ


    today: / yesterday:

    twitter / kuraku

      Wassr

      最近のブックマーク