モジュール名をsearch.cpan.org へのリンクにするEmacs-Lisp
なんかpermalink を書くのがだるかったので書いた.
lisp にちょっと慣れてきた気がする.
(defun my-hatena-convert-cpan () "カーソル付近のモジュール名をcpan URLに変換する。" (interactive) (my-hatena-get-near-word 'my-hatena-convert-cpan-1)) (defun my-hatena-get-near-word (string-maker) ; (let ((bounds (bounds-of-thing-at-point 'word))) (let ((bounds (bounds-of-thing-at-point 'filename))) ; :: のためにこっちに (if bounds (let* ((beg (car bounds)) (end (cdr bounds)) (new-str (funcall string-maker (buffer-substring beg end)))) (if new-str (progn (delete-region beg end) (insert new-str))))))) (defun my-hatena-convert-cpan-1 (name) "search.cpan へのリンクを作る" (let ((url '("[http://search.cpan.org/dist/"))) (if (stringp name) (let ((new-name name)) (while (string-match "::" new-name) (setq new-name (replace-match "-" t t new-name))) (setcdr url (list new-name "/:title=" name "]"))) (error "Invalid argument %s" x)) (mapconcat (lambda (n) n) url "")))