Migrating from EmacsWiki to EmacsMuse on my MacBook Pro(1)

私の環境では、EmacsWikiが欠かせない存在でした。今回のように端末を変更する際は環境を刷新するいい機会であるので、本家のEmacsWikiModeを訪れ、下調べしようかとしていたところ、私にとっては恐ろしい宣言がなされていました。以下はその抜粋です。

Note : EmacsMuse is considered to be the eventual replacement for Emacs Wiki Mode. EmacsMuse has been brought to you by JohnWiegley, who is the same guy who made Emacs Wiki Mode. MichaelOlson plans to port over any missing features and functionality from Emacs Wiki to Muse.


どうやら、EmacsMuseなるElispがEmacsWikiModeの代替えとして開発されており、EmacsWikiModeは将来的にはなくなってしまうようでした。


さらに調べてみると、EmacsMuseはEmacsWikiModeの作者、John Wiegleyが初めから設計し直したもののようです。

Emacs Muse is an authoring and publishing environment for Emacs. It simplifies the process of writing documents and publishing them to various output formats (HTML, PDF, DocBook, LaTeX, and more).

The Emacs Muse is similar to EmacsWikiMode, especially its markup. A comparison of the two is available on this page.


EmacsWikiと比べ、大幅に整備されているようでしたので、まずEmacsMuseを試してみることにしました。EmacsMuseのソースは現在のメンテナである、Michael Olsonのプロジェクトページ中段、Obtaining the softwareの章から入手可能です。私が入手したtarボールは、muse-3.02.93.tar.gzでした。これを、適当なディレクトリ以下でビルドし、インストールします*1

> tar zxvf muse-3.02.93.tar.gz
> cd muse-3.02.93
> make EMACS=/usr/local/bin/emacs
> sudo make install EMACS=/usr/local/bin/emacs


続いて、.emacsにEmacsMuse用の設定を追加します。このページを参考にさせていただきました。

;; muse.el

(require 'muse-mode)
(require 'muse-html)
(require 'muse-project)

;; The Following 2 lines don't seem to work
;; (setq muse-html-encoding-default 'utf-8)
;; (setq muse-html-meta-content-encoding 'utf-8)

(setq muse-mode-hook
      '(lambda ()
	  (set-buffer-file-coding-system 'utf-8)))

(add-to-list 'muse-project-alist
	     '("Wiki"
 	       ("~/share/wiki" :default "index")
	       (:base "html" :path "~/Sites/wiki")))

(setq muse-file-extension nil muse-mode-auto-p t)

(add-to-list 'muse-ignored-extensions "DS_store")

(setq muse-html-style-sheet
      "<link rel=?"stylesheet?" type=?"text/css?" href=?"style.css?">")


詳細に関しては、私が参考にさせていただいたページを参照していただくのをお勧めしますが、順番を追って見ていきましょう。

(require 'muse-mode)
(require 'muse-html)
(require 'muse-project)

まず必須のmuse-modeを読み込みます。現在のところはHTMLでの発行のみを考えているため、muse-htmlのみを追加で読み込んでいます。

muse-projectはemacs-wikiライクなプロジェクト管理用のElispのようです。これも読み込みます。

;; The following 2 lines don't seem to work
;; (setq muse-html-encoding-default 'utf-8)
;; (setq muse-html-meta-content-encoding 'utf-8)

(setq muse-mode-hook
      '(lambda ()
	  (set-buffer-file-coding-system 'utf-8)))

元来、Emacsでのデフォルトの文字コードEUC-JPとしていたのですが、HTMLの文字コードEUC-JPとして発行するとバックスラッシュが円記号としてレンダリングされてしまったので、これからのHTML発行に際しては、utf-8を使うことにしました。

設定当初は、muse-html-encoding-defaultおよびmuse-html-meta-content-encodingを適切に設定すれば如何なる文字コードのファイルであっても適切な文字コードで発行してくれるのではないかと思ったのですが、試してみるとどうやらそうでもありませんでした。そのため、muse-modeをフックし、ファイルをutf-8で編集することによって対処しました。


muse-modeを起動するとset-buffer-file-coding-systemによってバッファが更新状態になってしまうのが多少気になりますが、よしとしています。

(add-to-list 'muse-project-alist
	     '("Wiki"
	       ("~/share/wiki" :default "index")
	       (:base "html" :path "~/Sites/wiki")))

EmacsMuseのプロジェクトを設定します。EmacsMuseにおけるプロジェクトは複数設定可能ですが、今回は一つだけ設定しました。

また、普段からApache経由でlocalhostを参照しているため、発行先のディレクトリは~/Sites/wikiとしました。

(setq muse-file-extension nil muse-mode-auto-p t)

EmacsWiki + PlannerModeという環境では作成するファイルに拡張子が付いていませんでした。この設定をすると、EmacsMuseが作成するファイルにも拡張子が付加されないようになります*2

(add-to-list 'muse-ignored-extensions "DS_store")

Finderでそのディレクトリを開くと.DS_storeという名前のメタ情報ファイルが作成されます。このファイルを発行しないために、muse-ignored-extensionsに追加します。

(setq muse-html-sytle-sheet
      "<link rel=?"stylesheet?" type=?"text/css?" href=?"style.css?">")

発行されたHTMLファイルに埋め込まれるスタイルシートを指定します。


これで設定は終了です。では実際に、EmacsMuseを立ち上げます。

M-x muse-project-find-file

ミニバッファにファイル名を指定します*3。ここでは、2006.12.05とします

Find page: (default: index) 2006.12.05

ファイルが開くと同時にEmacsMuseモードが起動するため、muse-modeの設定から、バッファがutf-8に変換されます。

Wiki文書の作成が終了したら、M-x muse-project-public-this-file(C-c C-t)で発行します。~/Sites/wiki/2006.12.05.htmlが作成されているはずです。

*1:Carbon Emacsでバイナリコンパイルしていることに注意

*2:デフォルトの拡張子は、.muse

*3:私の設定ではプロジェクトが一つしか存在しないため、プロジェクトに関する問いは省略されている