Emacsのインストール

MinGW+MSYSの環境に、emacs22.0.5をインストールしました。
makeとかよくわからないのですが、ほぼこちらに書かれたとおりの手順でうまくできました。

上記のサイトの方法でcvsでのファイルの取得を行おうとすると、"Permission denied (publickey)"と出て取得できませんでした。おそらくssh関連の設定をしていないからなのでしょうが、よくわからないので下記のサイトの方法でファイルを取得しました。

また、IMEをインラインでうまく動作させるためにこちらで配布しているIMEパッチをあててから「make bootstrap」したところ、僕の環境では「RECONVERTSTRINGが宣言されていない」とのエラーが出てしまいました。パッチをあてるとw32term.cの740行目あたりにRECONVERTSTRING構造体の宣言が追加されるのですが、この宣言部は「#if __W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION < 7」が満たされたときしか有効にならないようです。MinGWのw32apiではRECONVERTSTRINGの宣言が見当たらないところをみると、おそらくVC++でビルドするときのために入っているのでしょう。僕の場合は最新版のPlathomeSDKをインストールしていたためこれにひっかかっていた模様。コメントアウトしたところ、無事にビルドすることができました。(configure.batの時に--cflags -D__W32API_MINOR_VERSION=6のようにしてもいけるのかな?)

そんなわけで、一連の手順をまとめるとこうなります。(MinGW、MSYS、msysDTKは既にインストールされているものとする)
GnuWin32 Packagesから

  • jpeg-6b-4.exe
  • libpng-1.2.8.exe
  • libungif-4.1.4-bin.zip
  • libungif-4.1.4-src.zip
  • tiff-3.8.2-1.exe
  • xpm-nox-4.2.0-bin.exe
  • xpm-nox-4.2.0-lib.exe
  • zlib-1.2.3.exe

をダウンロードする。
各exeファイルはダブルクリックして起動し、適当な場所へインストール。インストール先に作られた各フォルダ(bin,lib,includeなど全て)を、MinGWをインストールしたディレクトリへ上書き。

libungif-4.1.4-bin.zipを展開して、libungif.dll を、MinGWをインストールしたディレクトリのbinディレクトリへコピー。
libungif-4.1.4-src.zipを展開して、gif_lib.h を、MinGWをインストールしたディレクトリのincludeディレクトリへコピー。

msys上で、

$ cvs -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs login
(Logging in to anonymous@cvs.savannah.gnu.org)
CVS password: anonymous

$ cvs -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co emacs

と実行するとカレントディレクトリのemacsディレクトリにソースが落ちてくる。
IMEパッチemacsディレクトリにダウンロードし、patch -p0 < emacs-cvs-yyyymmdd-IME.patchを実行。
emacs/src/w32term.hファイルを開き、740行目「#if __W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION < 7」と751行目「#endif」をコメントアウト

コマンドプロンプト(cmd.exe)上で、emacsのソースを落としたディレクトリへ移動し、ntディレクトリへ入る(僕の環境では、c:\usr\emacs\nt). ここで、

configure.bat --with-gcc --no-debug --no-cygwin --prefix c:/usr/emacs/22.0.50 --cflags -DIME_CONTROL --cflags -D
RECONVERSION --cflags -DCLIENTEDGE

と実行。あらかじめ、MinGW\binとmsys\1.0\binへパスを通しておくこと。

終わったあとは、msysのプロンプトへ戻り、make bootstarapを実行。man周りでエラーが出るかもしれないけど気にしない気にしない。無事に済んだら、make allと実行。そしてmake installを実行すれば、configure.bat時にprefixで指定したディレクトリ(上記の例ではc:\usr\emacs\22.0.50)にemacs.exeとrunemacs.exeができている。