2011年1月24日月曜日

emacs calfw.el その3

calfw.el を使い始めて、howmとの連携もまあまあ満足できる感じだ。
私の場合、howm のディレクトリを複数切替えて使ったり、また howm をCVSで管理し、このCVSリポジトリを複数マシンで Dropbox を使用して共有したりしている。
そこで、howm ディレクトリを切り替えたり、CVSでアップデートした事により diary ファイルの内容が変ったと時、カレンダーの表示が変らないのである。「r (cfw:refresh-calendar-buffer)」コマンドでも変化しない。

・calfw-howm.el

(defun cfw:install-howm-schedules ()
  (interactive)
  "howmスケジュールからデータを取って表示する。"
  (add-to-list 'cfw:contents-functions 'cfw:howm-schedule-period-to-calendar)
  (add-hook 'howm-after-save-hook 'cfw:howm-schedule-cache-clear)
  (add-to-list 'howm-menu-allow 'cfw:howm-schedule-inline)
  )
howm-after-save-hook」に「cfw:howm-schedule-cache-clear」が設定されているので、howm で普通に予定を書き込んだ場合は、キャッシュがクリアされ、あらためて予定がカレンダーに読み込まれ、その予定がカレンダーに表示される。

そこで、「r (cfw:refresh-calendar-buffer)」コマンドを実行する時に、常に「cfw:howm-schedule-cache-clear」を実行する事とした。

・~/.emacs

(defadvice cfw:refresh-calendar-buffer (before refresh-calendar activate)
  (cfw:howm-schedule-cache-clear))
これで、「r (cfw:refresh-calendar-buffer)」コマンドを実行すれば、常に最新のスケジュールがカレンダーに表示される事となる。

0 件のコメント: