Hatena::Groupemacs

Emacs/Lisp/Drill

 | 

2009-07-13

anything-display-functionを使ってanything.elのウィンドウ表示を制御する

23:56 | はてなブックマーク -  anything-display-functionを使ってanything.elのウィンドウ表示を制御する - Emacs/Lisp/Drill

今まで通常サイズディスプレイだったので、大体1ウィンドウでEmacs + anything.elを使っていたのだけれども、ぼちぼちワイドウィンドウに乗り換えられそうなので、2ウィンドウ以上でのanythingの挙動を設定してみる。

ちなみにEmacs 22.2.1。

通常状態

f:id:k1LoW:20090713234806p:image

2ウィンドウ。ここからM-x anythingとした時の挙動の話。

anyting-default-display-buffer()

f:id:k1LoW:20090713234807p:image

デフォルト状態のanything.elの表示。d:id:IMAKADOはこの大きな画面を有効に使って超高速操作をしていた。一時期真似てみたけど挫折した思い出がある。

split-window()

f:id:k1LoW:20090713234808p:image

ちょうどshell-pop.elと同じような動き。結構好き。

;;split-window                                                                                                                                                                      
(defun anything-split-window (buf)
  (split-window)
  (other-window 1)
  (switch-to-buffer buf))

(setq anything-display-function 'anything-split-window)

split-root()

f:id:k1LoW:20090713234809p:image

どんなにウィンドウが分かれてていても強制的に下部にanything。これも視線の移動先が決まっていていい感じ。

うちの会社のもう一人のEmacserがこれ。

せっかく教えてもらったので、大きさをパーセント指定できるようにしてみた。

;;split-root                                                                                                                                                                        
(require 'split-root)
(defvar anything-compilation-window-height-percent 50.0)
(defun anything-compilation-window-root (buf)
  (setq anything-compilation-window
        (split-root-window (truncate (* (window-height)
                                        (/ anything-compilation-window-height-percent
                                           100.0)))))
  (set-window-buffer anything-compilation-window buf))

(setq anything-display-function 'anything-compilation-window-root)

ところで

世のanything脳な人たちはどれなんだろう?

 |