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に大変お世話になりました。