diredで anythingを使ってファイル・ディレクトリを絞り込む

diredでたくさんファイルがあるディレクトリを開いたとき
ファイル・ディレクトリを絞り込みたいということが結構あります。
原始的な方法だと検索するというのがあるかと思うのですが、
anythingを使ってというのが今時なのでそうしました。
sourceは anything-c-source-files-in-current-dir+を使ってます。

コード

;; anything in dired
(defun my/anything-dired ()
  (interactive)
  (let ((curbuf (current-buffer)))
    (if (anything-other-buffer
         '(anything-c-source-files-in-current-dir+)
         " *anything-dired*")
        (kill-buffer curbuf))))

(define-key dired-mode-map (kbd "p") 'my/anything-dired)

diredでの 'p'はデフォルトでは印刷に割当てられているのですが、
使わないので patternの pとしました。


kill-bufferしているのは、ディレクトリをたどったときに大量に
バッファを作らないようにするためです。自分で anything-sourceを
うまく書けばいいのかもしれないですが、既存のソースに良さそうな
ものがあったのでそれを使いました。

イメージ

おわりに

Vimfilerの機能を見ていると、絞り込みに応じて diredバッファの表示も
変化していたので、できればそんな感じがいいかなと思うんですけど、
現状だと diredと anythingの組み合わせになるので、そこまではできて
いません。direxにそのような機能が実装されたらいいなぁと淡い期待を
寄せています。まあ dired自身でもいいんですけどね。