rdefs を emacs/anything から使おう!

はじめまして、kmori と申します。最近は主に Ruby/Rails 案件を担当しています。初見で他人の Ruby で書かれたライブラリなどを読むときに便利な rdefs というツールがあります。モジュール、クラス、メソッドなどを単位にファイルの構造を一覧/可視化するコマンドラインツールです。著名なスーパーハッカー青木峰郎さんの書かれた小さな Ruby スクリプトです。ターミナルからこんなかんじに利用します。

dino-blog-1

rdefs 自体は るびまの添削記事青木日記で紹介されています。これを emacs の anything から利用する anything-rdefs という emacs 拡張 を書いたので紹介します。anything の説明と導入方法の解説は行いません。

dino-blog-2

rdefs を emacs から利用することで、以下のようなメリットがあります。ただし、私が emacs はウィンドウ分割せずに利用していることもあり、細かくウィンドウ分割された状況での利用は想定していません。

  • rdefs の結果を ruby-mode の配色で表示するので見やすい
  • 左のウィンドウで定義をプレビューできる(後述のスクリーンキャスト参照)
  • anything の絞り込みができる
  • 該当行にかんたんに移動できる

インストールと設定方法を説明します。emacs に anything をインストールし、rdefs.rb をパスの通ったところに配置し、実行権限を付与します。rdefs.rb は

で公開されています。
次に anything-rdefs を

からダウンロードし、ロードパスの通ったところに配置します。そして、dot.emacs などの設定ファイルに以下の内容を追記します。


(require 'anything)
(require 'anything-rdefs)

(setq ar:command "/path/to/rdefs.rb")
(add-hook 'ruby-mode-hook
  (lambda ()
    (define-key ruby-mode-map (kbd "C-@") 'anything-rdefs)))

(setq ar:command "/path/to/rdefs.rb") のところは rdefs.rb までフルパスで指定して下さい。Mac だと emacs がログインシェルの PATH を引き継がないことがあるらしいのでフルパスで指定するようにしました。
あとは、ruby-mode で開いているバッファで Ctrl-@ を押下すれば上の画像のようなウィンドウが表示されます。スクリーンキャストも作ってみました。

それから同様に、Sphinx などで利用されている rst ファイルの構造を表示し移動を簡単にする rst-goodies.el というのも書きました。よろしければお試し下さい。

最後に

ディノでは Ruby/Rails 案件を募集しています。6月中旬頃までに小さめのが一つ決まると最高なのですがどうでしょうか。ご検討のほどよろしくお願い致します。

コメント / トラックバックはありません

コメントする