changelogmemoマクロ改版

oeditでchangelog*1形式でメモを取りたいとき、Ctrl+3で日付、アイテムの追加。

とりあえず動くマクロを2008/12に作っていましたが、今日の日付が文頭から遠くにある場合に時間がかかる欠点がありました。ver.7.0.5.1でそれを解消できそうなeditor-search-string関数が追加になったので、改版。ソースが短くなりました。

ちなみに、editor-search-stringは見つかると0、見つからないと1を返すようです。

oedit.scm

(app-set-key "Ctrl+3" (lambda() (chlog-add)))

; changelogmemo 追加
(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")
    ;search today
    (if (= (editor-search-string (string-append "^" today)) 0)
      (begin ;found
        (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)は適当に。