人は俺を「recentfマスター」と呼ぶ

Emacsを使ってるみんな、recentfというパッケージを知っているかい?
「最近使ったファイル」を上から順に並べていってすぐに切り換えられるようにするヤツだ。最近使ったものを一番上の見易い位置に置いておくのは超整理法の手法で、すこぶる便利だ。知らない人はすぐに使おう。

ただ、デフォルトのrecentfのインターフェースはどうしようもなく使いづらい。ダイアログとかごちゃごちゃになってるし。たかだか超整理法の実装に1360行もあるってどういうことなの?そのまま使っていても、いまいち便利さに気付かないかもしれない。こんなのは空気のようなツールであるべきで、使い方を覚えるようなものではない。

anything.elから最近使ったファイルにアクセスする

そこで、anything.elの出番だ。auto-install.elを使って M-x auto-install-batch anything でanything.elをインストールしよう。

(require 'anything-startup)

.emacs入れるだけでとりあえず使えるようになる。そして、 M-x anything-for-files を実行しよう。パターンにマッチするバッファ、最近使ったファイル(recentf)、ブックマーク、locateから一括して検索してくれるぞ。こんなふうに。

http://www.rubyist.net/~rubikitch/archive/anything-for-files.png

これで、あたかもバッファを選択するかのように最近使ったファイルにアクセスできるぞ。いちいち長ったらしいディレクトリを入力しなくて済むのでかーなーり効率が上がる。

recentfを拡張する

ただ、recentfにもちょっと欠点がある。

  • あくまで最近find-fileしたファイルしか扱っていない
  • ディレクトリは扱ってくれない

その欠点を解消するために recentf-ext.elを作成した。

ファイルを使うってことは、べつにfind-fileに限らない。switch-to-bufferでファイルバッファにアクセスすることも含まれるだろう。ってなことで、前者はバッファを表示した時点でファイルを使ったとみなすことにする。

ディレクトリだってファイルの一種なのでディレクトリだけ差別するのは不公平だ。だからdiredバッファもrecentfで扱うようにしてみた。

M-x install-elisp-from-emacswiki recentf-ext.el でインストールしよう。.emacs

(require 'recentf-ext)

と記述するだけでrecentf-modeとともにこの拡張が有効になるぞ。これらのことは実質10行のコードで実現できる。

recentfは、もっと評価されるべきなんだよ。ガンガン使おうぜ!

返信

anything-match-pluginにfuzzyマッチも加えることは理論上可能です。matchとsearchを定義すればいいです。速度面とかどうなんでしょうね。