Ruby 勉強会でウソついてしまった

emacs には ffap という機能があって、rubikitch さんのブログで紹介されています。

マイクを持って、こんなことを口走ったものの、どうやらブログではなくて SoftwareDesign 誌の 2008 年 2 月号、Emacs マスターへの道という特集記事で見たんだったみたい。
ごめんなさい。

バックナンバーが買えるか分からないので、ffap の辺りだけ書いておく。

ffap.el というのは、elisp のファイルから require や autoload されるファイルのパスを調べて開いてくれる、というもの。

そのままでは Ruby のプログラムは扱えない。

Ruby のライブラリの場所を調べるには devel/which というライブラリを使う。

(defun ffap-ruby-mode (lib)
  (shell-command-to-string
   (format "ruby -rrubygems -rdevel/which -r%s -e 'print(which_library(%%[%s]))'" lib lib)))

(defun find-ruby-lib (lib)
  (interactive "sRuby library name: ")
  (find-file (ffap-ruby-mode lib)))

elisp で上記の設定をして、M-x find-ruby-lib すると Ruby のライブラリのパスを調べてくれる。

(require 'ffap)  ;; find file at point
(setq ffap-alist (cons '(ruby-mode . ffap-ruby-mode) ffap-alist))

それを ffap から使うためには、上記のように設定する。

require 'mathn'

#   ...

上のファイルで、mathn の上にカーソルを移動させ、M-x ffap すると、ミニ・バッファに mathn.rb のパスが現れる。

Find file or URL: /usr/local/lib/ruby/1.8/mathn.rb

そのまま enter キーを押せば mathn.rb が開ける。