Emacsのサイドバーにdirtreeがいい感じ

MacのフルスクリーンでEmacsを使うのが集中できて最近のお気に入りなんだけど、フルスクリーンにすると、文字がモニターの端に寄りすぎてしまって、目を片方に寄せるのががつらくなってしまう。そこで、サイドバーにディレクトリツリーを表示する拡張(VimだとNERDTreeのような。べつにツリーでなくてもいいんだけども)を色々探してたんだけど、dirtreeがいい感じだった。

ただ、元のままだと個人的には次のような問題がある。

  • dirtreeのウィンドウを開いた時にdirtreeのウィンドウが選択されてしまう。

    -> dirtreeのトグルを頻繁に行う(フルスクリーンとそうでないモードをよく切り替える)ので、カーソルはもとのバッファに置いておきたい(これ、elscreenやwindow.elとか導入しようと思う)。

  • pop-to-bufferした時にdirtreeのウィンドウが開いたバッファに切り替わってしまう。

    -> dirtreeのウィンドウはdirtreeだけにしたい

そこで、開発者の方に感謝しつつフォークして変更。

設定は以下のようにした。[2013-12-17:アップデート]

;; dirtree
(setq  dirtree-windata '(frame left 0.16 nil))

(require 'dirtree)

(defmacro my/if-dirtree-window-exist (win &rest on-t on-nil)
  `(let* ((buffer (get-buffer dirtree-buffer))
          (,win (and buffer
                    (get-buffer-window buffer))))
         (if ,win
             ,@on-t
           ,@on-nil)))

(global-set-key [f8]
                #'(lambda ()
                   (interactive)
                   (my/if-dirtree-window-exist window
                                               (delete-window window)
                                               (dirtree default-directory nil))))

(defun my/dirtree-update ()
  (my/if-dirtree-window-exist window
                              (unless (equal (buffer-name) dirtree-buffer)
                                (dirtree default-directory nil))))

(defadvice switch-to-buffer (after dirtree-update (buffer-or-name
                                                   &optional
                                                   norecord
                                                   force-same-window))
  (my/dirtree-update))
(defadvice quit-window (after dirtree-update (&optional kill window))
  (my/dirtree-update))
(defadvice windmove-do-window-select (after dirtree-update (dir &optional arg window))
  (my/dirtree-update))

(ad-activate 'switch-to-buffer)
(ad-activate 'quit-window)
(ad-activate 'windmove-do-window-select)

# Macのフルスクリーン時のスクリーン切り替えのスライドアニメーション、無効にできないのかなあ・・・

->

Emacs24.4から、ネイティブのフルスクリーンを使うかどうか選べるようになったらしい。 ネイティブ使わなければ、アニメーション無しで使えるかな・・。

http://www.emacswiki.org/emacs/FullScreen#toc24

24.4はewwというブラウザも標準搭載されるようで、リリースが待ち遠しい(もうすぐみたい?)。

[追記:2013-12-17]

Emacsのウィンドウマネージャをいろいろ試してみて、e2wmが一番求めているものと近いと思った。現バッファと同ディレクトリのファイルを一覧してくれる機能もあってすごく良かったんだけれど、上級者向けをうたっていることもあって設定がむずかしかったので、もうちょっと掘り下げてみようと思う。