emacsで毎日のメモのためのmarkdownを自動的に作成する

メモをとるのにmarkdownはとても便利.

emacsで作業中のメモをとるためのmarkdownを日別に自動的に作成するemacs lispのコード.

~/daily-notes/の下に日付の入ったファイル名を自動生成する. また、先頭に日付も自動的に挿入するようにしている.

(defvar daily-markdown-memo-directory "~/daily-notes"
  "Directory to save daily markdown memos.")
(defun daily-markdown-memo-create-today-markdown ()
  "Create markdown file for today under DAILY-MARKDOWN-MEMO-DIRECTORY."
  (interactive)
  ;; If there is no memo directory, create it.
  (if (not (file-directory-p daily-markdown-memo-directory))
      (progn
        (message "Creating directory: %s" daily-markdown-memo-directory)
        (make-directory daily-markdown-memo-directory)))
  (let ((today-file-full-path
         (let ((today-file (format-time-string "%Y-%m-%d.md" (current-time))))
           (concat daily-markdown-memo-directory "/" today-file))))
    ;; Verify if the buffer is already opened for today-file-full-path.
    ;; If not,
    (let ((file-buffer (find-file-noselect today-file-full-path)))
      (with-current-buffer file-buffer
        (if (not (file-exists-p today-file-full-path))
            ;; If it is the first time to open the file, insert date and save it automatically.
            (progn
              (insert (format-time-string "# %Y-%m-%d" (current-time)))
              (save-buffer))))))
  )
;; Run daily-markdown-memo-create-today-markdown when emacs is opened.
(add-hook 'after-init-hook '(daily-markdown-memo-create-today-markdown))
;; Run daily-markdown-memo-create-today-markdown every 30 minutes
(run-with-timer 0 (* 30 60) 'daily-markdown-memo-create-today-markdown)