1メモ1ファイルなのは基本、問題ないのだが、中には1日1ファイルにしたい場合があったのだ。たとえば、日記のような文書。どちらかを選ぶことはできるのだが、混在というのはできないようだった。もしかしたら最新版のバージョンではできるのかもしれないが。
とりあえず、1日1ファイルのものだけ、Org-modeにしてagendaに登録したい、という思いもあったので、C-c , dのキーを次のようにアサインした。
(require 'howm)これで、C-c , dとすると、その日の日記文書が自動的に開く、というわけ。
(require 'skk)
(require 'cl)
(require 'org)
(require 'calendar)
(global-set-key
"\C-c,d"
'(lambda ()
(interactive)
(let* ((howm-file-name-format "%Y/%Y-%m-%d.org" )
(file-target (concat howm-directory (howm-file-name))))
(if (file-exists-p file-target)
(find-file file-target)
(progn
(howm-create-file-with-title
(concat "Diary:" (skk-current-date)))
(save-excursion
(goto-char (point-min))
(insert-string "-*- mode:org; mode:iimage -*-\n")
(insert-string "#+TAGS: DVD(d) BOOK(b) HOME(h) NET(n) COMPUTER(c) IDEA(i) MEMO(m) SHOP(s)\n")
(insert-string "#+STARTUP: hidestars\n#+STARTUP: showall\n")
(org-mode)
(org-agenda-file-to-front))))
(toggle-truncate-lines)
(goto-char (point-max)))))
予定とか、TODOをちょこちょこいれていくと、自動的にagendaに登録されているので、Org-modeのagendaを開くと参照できる。まぁ、日替わりのremenberファイルみたいなものか。
agendaはorg-export-icalendar-combine-agenda-filesで出力してDropbox->Calendar for iPadで同期しているのでiPadで見ることもできる。もちろんMobileOrgにも同期している。
唯一の問題は1年間に300以上のファイルがagendaに登録されてしまうので重くなってしまう、ということだろう。これについては一応、スィーププログラムをつくって対処している。
(require 'cl)
(require 'org)
(defun y-org-agenda-remove-file ()
"org-agenda-filelistの中でorgが有効になっていないものを除外する"
(interactive)
(loop for filename in (copy-list org-agenda-files)
collect (save-window-excursion
(let ((buf (find-file filename)))
(when (not (y-exits-string-buf buf "^\*"))
(with-current-buffer buf
(org-remove-file)))))))
(defun y-exits-string-buf (buffername string)
"バッファの中にstringが存在するか"
(with-current-buffer buffername
(goto-char (point-min))
(search-forward-regexp string nil t nil)))