gnupack + Cygwin/Emacs24 が快適

いろいろ試した結果,WindowsでEmacs24使うならcygwin-gccでビルドしたEmacsが一番快適に使えるという結論に至りました.
gnupackで配布されているemacs24はmingwでビルドされているのですが,これが実はCygwinでビルドされたアプリとの相性が悪く,以下のような問題が発生したりします.

  • shell-modeからsshできない
  • sshできないのでssh経由でgitやbzrが使えない
  • ファイルパスの表現の仕方がCygwinと違うので一部elispが動かない

というわけで,CygwinでビルドしたEmacsをインストールします.

Cygwin版のgccを入れる

$ cyg-pm install -require gcc

Emacsのビルドに必要なライブラリを入れる

なんかごちゃごちゃやってたので,ビルドに何必要だったかは覚えてないですけど(ぇ
Emacsの実行に必要なパッケージは

$ cyg-pm search -require emacs

とかやるとでてくるので,これを参考に-develのサフィックスが付いたパッケージを入れとけばいいと思います.

ホームディレクトリのマウントポイントを変える

デフォルトでは /home が %INST_DIR%/home にマウントされてますがこれが実は厄介で,Emacs上のシェルから 非Cygwinアプリを実行しようとするとCygwinで認識してるパス(/home) と,非Cygwinアプリが認識してるパス(%INST_DIR%/home) が異なります.したがって,非CygwinアプリとEmacsが連動するような処理 (例えばflymakeでantを動かす場合) が正しく実行できなかったりします.ということで,gnupackのディレクトリにあるconfig.iniのHOMEを C:\home に変更してこれを回避します.

HOME           = C:\home

ソースを取ってきてビルド

ソースを取って~/src/emacsに展開.
インストール先は好きなところに入れればいいと思います.
私は~/installに入れました.
CCに/usr/bin/gccを設定しないとmingwのほうを使ってしまうので注意が必要です.

$ cd ~/src/emacs
$ CC=/usr/bin/gcc ./configure --prefix=$HOME/install
$ make && make install

出来上がりはこんな感じ.
f:id:st63jun:20120405160650p:plain

別途インストールしたtwittering-modeとanythingが動いてます.
X入れないので軽くて良いです.