schemeマクロでchangelog
oeditでchangelog*1形式でメモを取りたいとき、Ctrl+3で日付、アイテムの追加ができるようになります。
oedit.scm
(app-set-key "Ctrl+3" (lambda() (chlog-add))) ; changelog追加 (define (chlog-add) (begin (define chlog-user "testuser") (define chlog-email-address "testuser@aaa.bbb.ccc") (define today (sys-strftime "%Y-%m-%d" (sys-localtime (sys-time)))) (define chlog-date (string-append today " " chlog-user " <" chlog-email-address ">\n")) (define chlog-item "\t* :\n") (app-status-bar-msg "") ;search today (define rs (string-append "^" today)) (define rm (rxmatch (string->regexp rs) (editor-get-all-string))) (if rm (begin ;found ;move cursor (app-status-bar-msg "busy...") (editor-set-row-col 0 0) (editor-forward-char (rxmatch-start rm) #f) (app-status-bar-msg "") (editor-next-line 1 #f) (editor-paste-string "\n")) (begin ;not found ;insert date (editor-set-row-col 0 0) (editor-paste-string chlog-date) (editor-paste-string "\n\n") (editor-previous-line 1 #f))) ;insert item (editor-paste-string chlog-item) (editor-previous-line 1 #f) (editor-forward-char 3 #f)))
ユーザ名(testuser)、メールアドレス(testuser@aaa.bbb.ccc)は適当に。
作ってる人がいなかったので、年末休みで作成。scheme(lispも)よく知らない身ですが何やら動いてるっぽいです。
マクロ作成でここ*2に大変お世話になりました。