今まで Markdown から HTML へ変換する外部コマンドとして、markdown コマンドを使ってきた。
これでもまぁほとんどの場合は良いのだけれど、最近になって GFM (GitHub Flavored Markdown  を使ったテーブルをちょいちょい書く機会が連続してあって、GFM には対応していない markdown コマンドではちょっと物足りなさを感じていた。
GFM 対応のコマンドが無いわけがない、とググってみたら、最初に見つかったのが gh-markdown-cli だったので、インストールしたみたら deprecated だと言われた。
% npm install -g gh-markdown-cli
npm WARN deprecated github-flavored-markdown@1.0.1: This project is long out of date. Use 'marked' instead.
/usr/local/bin/mdown -> /usr/local/lib/node_modules/gh-markdown-cli/bin/mdown
gh-markdown-cli@0.2.0 /usr/local/lib/node_modules/gh-markdown-cli
├── commander@2.3.0
├── github-flavored-markdown@1.0.1
├── wrench@1.5.8
├── minimatch@1.0.0 (sigmund@1.0.0, lru-cache@2.5.0)
└── glob@4.0.5 (once@1.3.0, inherits@2.0.1, graceful-fs@3.0.2)
あ、 npm コマンドを使っているけど、Node.js は別途インストールしてあったので、それをそのまま使っている。
上記の WARN メッセージは「github-flavored-markdown プロジェクトはだいぶ更新されてないんで、代わりに marked を使った方がいいよ」的な内容。
ということで、その marked をインストールしてみた。
% npm install -g marked
/usr/local/bin/marked -> /usr/local/lib/node_modules/marked/bin/marked
marked@0.3.2 /usr/local/lib/node_modules/marked
基本的には「Node.js の Markdown パーサ用モジュール」という立ち位置だと思うんだけど、CLI コマンド marked も付いてくる。そのコマンドが /usr/local/lib/node_modules/marked/bin/marked にインストールされ、PATH が通っているであろう /usr/local/bin/marked へシンボリックリンクが張られた状態になった。
% ls -l /usr/local/bin/marked
lrwxr-xr-x  1 suzuki  admin  37  8 14 23:42 /usr/local/bin/marked@ -> ../lib/node_modules/marked/bin/marked
ちなみに、この marked も GitHub にリポジトリがあった。
次に markdown-mode の設定をしてやる。
(setq markdown-command "/usr/local/bin/marked")
これで、C-c C-c v (markdown-export-and-preview) を実行した場合に、
marked コマンドで HTML ファイルへ変換して出力という動作になる。
例えば、<table> に変換してくれることを期待して、次のように書いたとする。
| hoge | fuga |
| ---- | ---- |
|  aa  |  bb  |
|  cc  |  dd  |
これまで使っていた markdown コマンドだと、次のように変換されていた。
<p>| hoge | fuga |
| ---- | ---- |
|  aa  |  bb  |
|  cc  |  dd  |</p>
marked コマンドへ変えたことにより、このように変換されるようになった。
<table>
<thead>
<tr>
<th>hoge</th>
<th>fuga</th>
</tr>
</thead>
<tbody>
<tr>
<td>aa</td>
<td>bb</td>
</tr>
<tr>
<td>cc</td>
<td>dd</td>
</tr>
</tbody>
</table>
この日記も GFM スタイルで書いているので、同じテキストを入力するとこうやって <table> を使った表示になってくれる。便利。
| hoge | fuga | 
|---|---|
| aa | bb | 
| cc | dd | 
markdown-mode には、gfm-mode も一緒に入っていたのにずっと気づいていなかった。
auto-mode-alist で *.md ファイルの編集の場合には、すべからく gfm-mode で編集するようにしてやったわ。
(add-to-list 'auto-mode-alist '("\\.md\\'" . gfm-mode))
よく使ってるものでも(あんまり詳しく調べないで使っていることもあって)知らない機能がたくさんあるなー。