Emacs で md ファイルを編集する

今日は、Cygwin 環境の Emacs で Readme.md 等の markdown ファイルを編集する設定を紹介します。
Emacs で編集する
M-x package-install で markdown-mode をインストールしておきます。Emacs で md ファイルを開けば markdown-mode で編集できます。

・md ファイルを表示する
github.com
ここから markcat をダウンロードして zip を展開します。ディレクトリ名にスペースがあると面倒な事になるので c:\tools 等に置いてください。

次に Emacs の設定です。

(setq markdown-open-command "~/.emacs.d/etc/markcat.sh")

とします。

最後に markcat.sh を用意します。

#!/bin/sh

if [ "$1" ]; then
    /cygdrive/c/tools/MarkCat-win32-x64/MarkCat.exe `cygpath -w "$1"` &
else
    /cygdrive/c/tools/MarkCat-win32-x64/MarkCat.exe &
fi

Cygwin の場合は実行権限が自動で付いたようですが、自動で付かない場合は、

$ chmod +x ./markcat.sh

として実行権限を付与してください。

ポイントは 2 点です。
・バックグラウンドで動かしたいので「&」を付ける。(付けないと markcat を終了するまで Emacs が固まってしまいます)
・markcat は普通の Windows アプリなので Cygwin のパスは理解できません。(/home とか言われても「は?」ってなりますw)。なので cygpath で Windows のパスに変換してあげます。

あとは、Emacs で md ファイルを編集して、C-c C-c o で markcat が起動するのでプレビューできます。Emacs で md ファイルを保存すると markcat は再プレビューしてくれます。便利です。


さらに Windows のパスに空白が入っていることがあるので、cygpath の結果を「"」で括ったほうが良いかも。

#!/bin/sh

if [ "$1" ]; then
    /cygdrive/c/tools/MarkCat-win32-x64/MarkCat.exe "`cygpath -w "$1"`" &
else
    /cygdrive/c/tools/MarkCat-win32-x64/MarkCat.exe &
fi

これでパスに空白があっても開けます。
スペース込みのパスの場合にスクリプトの第一引数「$1」 にちゃんと渡されるの?って懸念はあるけど、なんか大丈夫ぽい(適当