Anythingというelispが活発に開発されている。それは、ひとつのキーであらゆる動作をまとめてしまうもの。たとえば、find-file, bookmark-jump, switch-to-buffer, recentfなどの情報源をひとまとめに。

M-x anythingして開きたいファイルの部分文字列を入れると、あらゆる情報源からマッチするものを選択できるようになる。

anything.elは汎用的にできているので「ファイル」に関する操作ばかりではない。ユーザ定義次第で「なんでも」まとめてしまえるとのこと。

1ヶ月前にプロトタイプが出て以来、普段は静かなgnu-emacs-sourcesメーリングリストが祭りになっている。これはちょっとした事件だ。

最初、「open anything」という説明だけを見てどうせwindozeのファイル関連づけとかそんなんだろとタカをくくっていたが、いざ見てみると、恐しいほど便利で汎用的で驚いた。祭りになるのもうなづける。

anything.elのデフォルトの設定はあくまでdemonstrationのために過ぎない。設定をいじくらずにanything.elを評価すべからず！

まずはインストール。anything.el本体と設定をまとめたanything-config.elがある。

http://www.emacswiki.org/cgi-bin/wiki/download/anything.el

http://www.emacswiki.org/cgi-bin/wiki/download/anything-config.el

defvar依存関係の問題で両方のファイルをload-path上に配置してからbyte compileするように。そして

(require 'anything-config)

とするだけ本体も読み込まれる。

さらに情報源を設定し、

(setq anything-sources (list anything-source-buffers anything-source-bookmarks ;;anything-source-recentf anything-source-file-name-history anything-source-locate-r anything-source-complex-command-history)) (setq anything-type-actions (list anything-actions-buffer anything-actions-file anything-actions-sexp))

M-x anything で起動。

そしたら、開かれているバッファや最近開いたファイルやブックマークなどがリストされる。なにか文字を打つと、打った文字列を正規表現と解釈して絞り込み検索される。そして矢印キーで上下移動、情報源の切り替えができる。

ちなみに俺はicicles junkyだし、矢印キーなんか触ってられないのでこんなのを入れてる。

(define-key anything-map "\C-p" 'anything-previous-line) (define-key anything-map "\C-n" 'anything-next-line) (define-key anything-map "\C-v" 'anything-next-page) (define-key anything-map "\M-v" 'anything-previous-page)

表示させたい情報源は自由に設定できるし、いろいろ試してみよう。それどころか簡単に追加できるし。

iswitchbを使っている人は

(anything-iswitchb-setup)

を入れると幸せになれるだろう。通常通りiswitchb-bufferしてみると…

「百聞は一見にしかず」というじゃないか、あとは試してみよう。