calendar で日付選択して貼り付ける関数作った

デフォルトで howm 形式のフォーマットで出力する。
(calendar-exit)して(insert)しているので、ウインドウ構成によっては思ったところに貼り付けられないかもしれない。

前にいた window をとれたらいいんだけど。

(eval-after-load "calendar"
  '(progn
     (defun calendar-input-date (&optional format-string time command)
       "Insert current cursor date string to previous buffer."
       (interactive
        (if current-prefix-arg
            (list
             (read-string "Format: " "[%d-%02d-%02d %s]%s")
             (read-string "Time: " (format-time-string "%H:%M"))
             (read-string "Command(+@!):" "@")
             )
          (list "[%d-%02d-%02d %s]%s" (format-time-string "%H:%M") "@")
          )
        )
       (let*
           ((date (calendar-cursor-to-date t))
            (month (calendar-extract-month date))
            (day (calendar-extract-day date))
            (year (calendar-extract-year date)))
         (calendar-exit)
         (insert (format format-string year month day time command)))
       )
     ))

(define-key calendar-mode-map (kbd "<return>") 'calendar-input-date)

追記

Meadow/Emacs memo: メモを書こうに全く同じ用途の関数があった…。
このエントリを書いたあとで見つけた…。

せっかくなので参考にしてすこし書き直しました。

2012-03-28 21:58 追記

calendar-extract-* なるものがあったのでそれを使うように。