理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

モジュール名からモジュールのソースを開く elisp

前に作ったものの改変版。ミニバッファからモジュール名を指定する。

(defun find-perl-module-source (module)
  (interactive "MModule name: ")
  (internal-find-perl-module-source module))

(defun internal-find-perl-module-source (module)
  (if module
      (let* ((buffer-name "*perldoc buffer*")
             (return-code (call-process "perldoc" nil buffer-name t "-l" module)))
        (with-current-buffer buffer-name
          (let ((buffer-content (buffer-substring (point-min) (progn (end-of-line) (- (point) 1)))))
            (kill-buffer buffer-name)
            (if (eq return-code 0)
                (find-file-read-only buffer-content)
              (message "perldoc: %s" buffer-content)))))
    (message "empty module name")))