/ / 最新

swk's log - chalow の他記事参照文字列を生成する elisp

2006-10-22

* chalow の他記事参照文字列を生成する elisp [chalow][logging] 3 users

chalow の「Referrer (Inside)」機能を常用している話は以前書いた [2006-05-05-1]

でもこの [YYYY-MM-DD-I] みたいな文字列を書くのって面倒くさくないすか? エディタ上で作業するなら該当記事を探して,日付を確認して,何番目の記事かを確認して…になるわけだけど面倒くさすぎる.そんなわけで,ブラウザで自分のページを開いて clsearch.cgi で検索してコピーペースト…ってのが最近の自分的主流なのですが,やっぱり作業は emacs の中で閉じている方が楽だ.


とここまで書いて,w3m.el でも使えばいいんじゃね? とか思ったがそれは気づかなかったことにして,


この [YYYY-MM-DD-I] な文字列を kill-ring につっこむ elisp を書いてみました.勢いだけで書いたので処理が汚いのは勘弁して頂くとして,というかあまりテストしてないのですが,一応動いている模様なので貼っておく.

(defvar chalow-date-regexp "^[01-9]+-[01-9][01-9]-[01-9][01-9]")
(defvar chalow-itembullet-regexp "^\t\\*")
(defun chalow-date-to-datestr (str) str)

(defun chalow-kill-datestr ()
  (interactive)
  (save-excursion
    (let ((curpos (point)))
      (if (re-search-backward chalow-date-regexp nil t)
          (let ((itemnum 1)
                (dstr (buffer-substring (match-beginning 0) (match-end 0))))
            (goto-char curpos)
            (if (not (re-search-forward chalow-date-regexp nil t))
                (goto-char (point-max)))
            (while (re-search-backward chalow-itembullet-regexp (1+ curpos) t)
              (setq itemnum (1+ itemnum)))
            (kill-new (format "[%s-%d]" (chalow-date-to-datestr dstr) itemnum))
            (message (car kill-ring)))
        (message "date not found")))))

Ctrl-S とかで (別に他の何でもいいですが) 該当記事を探して,その記事の途中のどこかで M-x chalow-kill-datestr すると kill-ring に [YYYY-MM-DD-I] が追加されるので,Ctrl-Y で貼りつけます.

先頭の方の変数とかをいじれば,ChangeLog とは違うフォーマットで書いている場合にもある程度適用できるんではないかと思います.(というか私がそうしてます)

最終更新時間: 2009-01-04 15:31


Shingo W. Kagami - swk(at)kagami.org