Emacs Lispを書いてみた - Perlモジュール名にカーソルを合わせて M-.するとソースを開く
id:higepon:20060131:1138681298の続き。
- etagsを使おう(nanasiさん)
- xyzzyの例(http://d.hatena.ne.jp/miyamuko/20060131)
などの情報をいただきました。
というわけで 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を使おう)