2016年1月30日土曜日

[Emacs] org-modeで新しいメモを追加するElisp

ここ数年、Emacsでメモをとるのに、Change Logモードを使ってきた。
メモを書きたいときに、C-x 4 a (add-change-log-entry-other-window) で 、簡単に、新しいエントリをメモの最初に追加できるので便利だった。
最近、orgモードでメモをとり始めたのだけど、長年使ってきた 新エントリの追加ができず不便だったので、作ってみた。

(global-set-key (kbd "C-x 5 a") 'insert-memo-new-headline)

(defvar *memo-file* "~/org/memo.org")

(defun insert-memo-new-headline ()
  (interactive)
  (let ((memo-buffer (find-file-noselect *memo-file*)))
    (unless (eq (current-buffer) memo-buffer)
      (when (one-window-p t)
 (split-window))
      (other-window 1)
      (switch-to-buffer memo-buffer)))
  (goto-char 0)
  (insert "\n\n")
  (goto-char 0)
  (insert "* ")
  (org-insert-time-stamp nil)
  (insert " "))

C-x 5 a で *memo-file*で指定したファイルの最初に移動し、 図のような形式で、新しいメモを追加できるようになる。



久し振りにElispのコードを書いたけど、いろいろ忘れてしまっていた...
こういうときは、るびきちさんのEmacs Lispテクニックバイブルがとても便利。