contentswitch.el 〜ファイル名やバッファの内容を指定してバッファを選択する〜

M-x install-elisp http://www.emacswiki.org/cgi-bin/emacs/download/contentswitch.el


EmacsWikiにまたおもしろいEmacs Lispが登場した。contentswitch.elだ。
これはバッファ名やバッファの「内容」の部分文字列を指定しつつバッファの候補を絞り込んでいくやつだ。
候補の絞り込みといえばanything.elでおなじみだが、contentswitch.elの作者はanything.elの原作者のTamas Patrovics氏だ。*1コードもけっこう似ている。

たとえば、a.rbが以下の内容だとして (require 'contentswitch) 後に M-x contentswitchとしてみる。

RUBY_RELEASE_DATE               # => "2008-08-11"
RUBY_VERSION                    # => "1.8.7"
RUBY_PATCHLEVEL                 # => 72

↓のようになる。一見anythingとそっくりだ。
http://www.rubyist.net/~rubikitch/images/contentswitch1.png

で、patcと入力してみると!
http://www.rubyist.net/~rubikitch/images/contentswitch2.png

確かにバッファの「内容」がハイライトされていて候補になっている!!
あとはEnterでa.rbを選択できる。

バッファの内容を少し覚えていて、たしかこんな内容だったかな〜というときに使うと便利そうだ。

だけどこれってanything.elでも実装できないかなーって気がするんよ。candidatesにtext propertyつきの文字列を用意してvolatileで毎回候補を作ってしまえば…

color-moccur.elでも最大1回だけマッチを表示する設定にすれば実現できるかも。

今のところなにも反応がないんだけど、興味ある人は試してみよう。gnu-emacs-sourcesメーリングリストで感想を送ってあげると喜ぶかも。

俺の環境じゃ.emacsとケンカしてエラーになってしまうなぁ。動作確認は素のemacsでやった。

*1:忙しすぎてコード書く暇ないと言ってたのにちゃっかり作ってるようだ。