[emacs][anything] anything-display-function でストレスフリー

常にemacsのwindowを複数に分割して作業しているので、どうしてもanythingウインドウが小さくなってしまい不自由していた。

しかし、anything-display-functionを使ってanything.elのウィンドウ表示を制御する - Emacs/Lisp/Drill - Emacsグループ の split-root.el を用いた方法で気持ちよく解決。
anything.el に、anything-display-function なる便利な設定が追加されたことに今更ながら気がついた orz

因みに、記事の通りの設定だと、widen-window.el と併用したときに動作に違和感があったので、高さを window-height ではなく、 frame-height を元にして求めるように変更した。

(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 (* (frame-height)   ;; ここ
                                        (/ anything-compilation-window-height-percent
                                           100.0)))))
  (set-window-buffer anything-compilation-window buf))

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


更に、以前書いた記事 [emacs][anything] anything-windowの動的縦横再分割とサイズの変更 - プログラム番長のヲボエガキ の、縦分割/横分割切り替え関数の併用で、完全にストレスフリーです。

(defun my-anything-toggle-resplit-window ()
  (interactive)
  (when (anything-window)
    (save-selected-window
      (select-window (anything-window))
      (let ((before-height (window-height)))
        (delete-other-windows)
        (switch-to-buffer anything-current-buffer)
        (if (= (window-height) before-height)
            (split-window-vertically)
          (split-window-horizontally)))
      (select-window (next-window))
      (switch-to-buffer anything-buffer))))

(define-key anything-map "\C-o" 'my-anything-toggle-resplit-window)