Pages

2005-11-03

hatena-mode 用 quickurl の設定

先日のはてなダイアリーへのエントリーを見ると、リンク部分の日本語がひどいことになってる。例えば

昨日に引き続いて、今日も ひきがえるの日記 で入力しました。

一体、なんのこっちゃ。本当は、 今日も hatena-mode で入力しました と書きたかった Xp。

はてな記法によるリンク

はてなの記法によると

  1. url
  2. [url:title]
  3. [url:title=TITLE]

というような書き方でリンクが張れる。

1 番目のリンクは、URL がそのまま表示される。2 番目のリンクは、リンク先のタイトルがアンカー名になる。3 番目のリンクはアンカー名を TITLE に指定する。

前回の記事では、リンク先のタイトルを確かめもせずに 2 番目のリンクの張り方をしたのが拙かった。不精せず、3 番目の書き方でリンク名を指定すべきだった。

quickurl を使う

この手のリンクは、Emacs の quickurl を使って入力するようにしているので、 hatena-mode にも対応させてみた。.emacs に書いた設定は以下の通り。

;;
;; quickurl
;;
(define-key mode-specific-map "q" 'quickurl)

(setq quickurl-grab-lookup-function #'quickurl-current-word)
(defun quickurl-current-word ()
  (save-excursion
    (let ((beg (progn (skip-chars-backward "A-Za-z0-9-") (point)))
   (end (progn (skip-chars-forward  "A-Za-z0-9-") (point))))
      (buffer-substring-no-properties beg end))))

(defadvice quickurl-insert (after fold-html-if-available)
  "Fold inserted url if fold-html-mode is t"
  (when (and 
  (memq major-mode '(nxml-mode sgml-mode xml-mode html-mode yahtml-mode xhtml-mode))
  (boundp 'html-fold-mode) html-fold-mode)
    (html-fold-inline)))

(setq quickurl-format-function #'quickurl-mode-format-function)
(eval-after-load "quickurl"
  '(progn
    (defun quickurl-mode-format-function (url-list)
       (let ((url  (quickurl-url-url         url-list))
      (desc (quickurl-url-description url-list)))
  (delete-region (point) (search-backward lookup))
  (cond
   ((eq major-mode 'hatena-mode)
    (format "[%s:title=%s]" url desc))
   ((memq major-mode '(nxml-mode sgml-mode xml-mode yahtml-mode))
    (format "<a href=\"%s\">%s</a>" url desc))
   ((memq major-mode '(rd-mode))
    (format "((<%s|URL:%s>))" desc url))
   (t url))))
    (ad-activate 'quickurl-insert)
))

quickurl については、以下の記事を参照されたし。

No comments:

Post a Comment