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 が開ける。