カーソルのあたりのモジュールのソースコードを開く

ffapが便利そげなので使ってみた。

ソースコード中に

use Data::Dumper;
use FindBin;

とかあるときに、「Dumper」や「FindBin」のあたりにカーソルをもっていってC-xC-fするとそのモジュールのファイルが開ける。

こんな感じ。似たようなffap-*-pathが何個もあってださいけどそっと目をつむる。

;;; ffap ===================================================================
(ffap-bindings)

;; perl
(add-to-list 'ffap-alist  '(cperl-mode . my-cperl-ffap-locate))
(setq ffap-perl-inc-dirs
      (apply 'append
             (mapcar (function ffap-all-subdirs)
                     (split-string (shell-command-to-string
                                    "perl -e 'pop @INC; print join(q/ /,@INC);'")))))
(defun my-cperl-ffap-locate(name)
  "Return cperl module for ffap"
  (let* ((r (replace-regexp-in-string ":" "/"       (file-name-sans-extension name)))
         (e (replace-regexp-in-string "//" "/" r))
         (x (ffap-locate-file e '(".pm" ".pl" ".xs") ffap-perl-inc-dirs)))
    x))

;; ruby
(if (executable-find "ruby")
    (progn
      (add-to-list 'ffap-alist  '(ruby-mode . my-ruby-ffap-locate))
      (setq ffap-ruby-path
            (apply 'append
                   '(".")
                   (mapcar (function ffap-all-subdirs)
                           (split-string (shell-command-to-string
                                          "ruby -e 'print ($LOAD_PATH-[\".\"]).join(\" \");'")))))
      (defun my-ruby-ffap-locate (name)
        (if (string-match "\\.rb\\'" name)
            (ffap-locate-file name t ffap-ruby-path)
          (ffap-locate-file name '(".rb") ffap-ruby-path)))
      ))

;; php
(if (executable-find "php")
    (progn
      (add-to-list 'ffap-alist  '(php-mode . my-php-ffap-locate))
      (setq ffap-php-inc-dirs
            (apply 'append
                   '(".")
                   (mapcar (function ffap-all-subdirs)
                           (split-string (shell-command-to-string
                                          "php -r 'echo str_replace(\".:\", \"\", get_include_path());'") ":"))))
      (defun my-php-ffap-locate (name)
        (if (string-match "\\.php\\'" name)
            (ffap-locate-file name t ffap-php-inc-dirs)
          (ffap-locate-file name '(".php") ffap-php-inc_dirs)))
      ))