hatena-insert はてな記法を入力補助

今に始まったことじゃないが、どうも物忘れがひどい。
はてな記法もそのうちのひとつ。すさまじい勢いで忘れている。というか憶える気がないのか。

頭が悪いのはツールで補う。いつものことだ。
決まったキーを押すたびに候補を順繰りに挿入してくれるやつを書いた。
2011.4.6 *hatena-insert-alist* の名前が間違ってたので直した。

;;;
;;; hatena-insert
;;;
(defvar *hatena-insert-alist* '(("<br>"         . "改行")
                                (">||\n||<"     . "スーパー pre")
                                (">|lisp|\n||<" . "スーパー pre lisp")
                                ("[:title=]"    . "リンク")
                                ("(())"         . "脚注")
                                (">>\n<<"       . "引用")
                                ;("-"           . "リスト")
                                ;("+"           . "リスト 番号つき")
                                ("**"           . "小見出し")))

(defvar *hatena-insert-last-num* 0)

(defun hatena-insert ()
  (interactive)
  (let ((lst *hatena-insert-alist*))
    (setq *hatena-insert-last-num*
          (if (eq *last-command* 'hatena-insert)
              (progn
                (delete-char (1+ (length (car (nth *hatena-insert-last-num* lst)))))
                (mod (incf *hatena-insert-last-num*) (length *hatena-insert-alist*)))
            0))
    (let ((e (nth *hatena-insert-last-num* lst)))
      (save-excursion (insert (car e) "\n"))
      (message "~D/~D ~A" (1+ *hatena-insert-last-num*) (length *hatena-insert-alist*)
               (cdr e)))))

(global-set-key #\M-3 'hatena-insert)

せっかく候補を出してくれても、意味すら忘れているアホな自分のために、下のステータスバーに候補番号と記法名を表示するようにした。
候補の追加とかは *hatena-insert-alist* に。
キーバインドは、なんでか M-3 に割り付けてしまった。なんでか。