Migrating from EmacsWiki to EmacsMuse on my MacBook Pro(3)
先日、EmacsMuseの設定を終え、日記の環境を本格的にEmacsWikiModeからEmacsMuseに移行しました。その際に、muse-mode-hookからバッファの文字コードをutf-8に更新するフックを追加しました。
(setq muse-mode-hook
'(lambda ()
(set-buffer-file-coding-system 'utf-8)))
設定当初は、muse-html-encoding-defaultおよびmuse-html-meta-content-encodingを適切に設定すれば如何なる文字コードのファイルであっても適切な文字コードで発行してくれるのではないかと思ったのですが、試してみるとどうやらそうでもありませんでした。そのため、muse-modeをフックし、ファイルをutf-8で編集することによって対処しました。
muse-modeを起動するとset-buffer-file-coding-systemによってバッファが更新状態になってしまうのが多少気になりますが、よしとしています。
しかし、実際に運用するにつれ、やはり内容的に更新していないバッファが更新状態になってしまうケースが気になり始めてきたため、フックの処理を変更しました。
(setq muse-mode-hook '(lambda () (unless (string-match "utf-8" (symbol-name buffer-file-coding-system)) (set-buffer-file-coding-system 'utf-8))))
set-buffer-file-coding-systemによって強制的にutf-8に文字コードを変更する前に、現在のバッファの状態、buffer-file-coding-systemのシンボルに"utf-8"という文字列が含まれていない場合のみ文字コードを変更するようにしました。
また、以前の環境ではかなり古いヴァージョンのplanner.elを愛用しており、その影響もあって、日記に用いているファイルの命名規則には、"YYYY.MM.DD"を用いています。またそのヴァージョンのplanner.elでは、plan関数を呼び出した時点の日付ファイルのバッファが開く仕様でしたので、重宝していました。
EmacsMuseでは、muse-project-find-fileによってEmacsMuseプロジェクトのファイルを開く際に、予めmuse-project-alistに設定しているデフォルト値を伴ってインタラクティブにファイル名を促します。
Find page: (default: index)
しかしながら、その日の日付を入力するという行為が中々骨の折れる作業であったため、あまりスマートではないですが、.emacsが評価される時点の日付をデフォルト値として設定するように、muse-project-alistの設定を変更しました。
(add-to-list 'muse-project-alist `("Wiki" ("~/share/wiki" :default ,(format-time-string "%Y.%m.%d" (current-time))) (:base "html" :path "~/Sites/wiki")))
この設定によって、例えば、2006/12/10にEmacsを起動した場合、Wikiプロジェクトのデフォルトのファイル名は"2006.12.10"となります。
静的な解決であるため、日付を超えてEmacsを起動し続けた場合には機能しません。多分にadviceを用いて動的に決定するのがよりよい解決作なのでしょうが、私のElispに対する知識の欠落から、解決には至っていません。