Emacs Lispを書いてみた - Perlモジュール名にカーソルを合わせて M-.するとソースを開く

id:higepon:20060131:1138681298の続き。

などの情報をいただきました。

というわけで id:miyamukoさんのxyzzyの例をまねして、初めて実用的なEmacs Lispを書いてみました。

;; cperl-modeでモジュール名にカーソルを合わせてM-.でソース開く
(setq perl-find-module-libdir "x:/oop/lib") ; libディレクトリのPath

;; M-.
(add-hook 'cperl-mode-hook
          (function (lambda ()
                      (define-key cperl-mode-map "\M-." 'perl-find-module)
)))

(defun perl-module-to-file (libdir module)
  (concat libdir "/" (replace-regexp-in-string "::" "\/" module) ".pm"))

(defun perl-find-module ()
  (interactive)
  (let*
      (
       (begin (save-excursion (skip-chars-backward "a-zA-Z0-9_:") (point)))
       (end (save-excursion (skip-chars-forward "a-zA-Z0-9_:") (point)))
       (module (buffer-substring begin end))
       )
    (message module)
    (find-file (perl-module-to-file perl-find-module-libdir module)
    )
))


早速同僚のid:hideokiから、libディレクトリは複数指定したいね。
と言われたのですがそろそろギブです。

追記:ただいま改良中(perldocを使おう)