メモ: Emacs 23.1 をビルド

昔から Emacs 系のエディタを使っていたため、今でも Meadow を使っているのだが、Meadow3が開発中のまま更新されなくなり数年が経ってしまった。そして本家 Emacs が Windows 対応されるようになったので、ちょっとそちらに手を出してみようかと試してみた。

ただし、本家 Emacs は日本語IMEに対する対応がいまいちらしく使い物にならない。それに対し、有志の方々が日本語IMEに対応したパッチを作成しているので、それを利用してみる。なお、最新 Emacs (Emacs 23)に対しては自分でソースにパッチを当てて、ビルドする必要がある。そこで、実際にやってみた手順をまとめてみた。


*2010/11/29 GnuWin実行環境のインストールについて追記。



MinGW インストール


準備その1。ビルドするためのコンパイラの用意。

MinGW 公式: http://www.mingw.org/
SourceForge: http://sourceforge.net/projects/mingw/

Source Forge からインストーラ(MinGW-5.1.6.exe)をダウンロード。
インストーラを実行し、 D:/MinGW などにインストール。
とりあえず Base と Make を選択。
インストール先の bin に PATH を通す。

続いて、 MSYS のインストール。主に contrib 実行用。
ダウンロード場所が良くわかりにくいが、まずは以下をじっくり読んでみる。
http://www.mingw.org/wiki/MSYS
ここの Installing MSYS の章の中に、 MSYS 1.0.11 へのリンクがあり、それがダウンロード場所(2010/8/6現在)。
これを落として実行。インストール先は例えば D:/msys/1.0 。
MinGW とは分けておくのが良いらしい。
そしてここの bin にも PATH を通しておく。
# ひょっとしたら、 emacs の contrib 実行は MSYS は不要かもしれない。
# 後述のパッチ当てなどには必要になってくる。

追加パッケージ(ライブラリ)インストール


準備その2。ビルド時に利用するパッケージを用意。

GnuWin 公式: http://gnuwin32.sourceforge.net/

ここの、 Download/Packages リンク先より、以下のパッケージをダウンロード。
具体的には、それぞれのリンク先にあるところの、 Developer files の zip を落とし、 MinGW インストール先に展開する。
括弧内は実際にダウンロードされるファイル(8/5現在)。

  • GifLib (giflib-4.1.4-1-lib.zip)
  • Jpeg (jpeg-6b-4-lib.zip)
  • LibPng (libpng-1.2.37-lib.zip)
  • Tiff-win32 (tiff-win32-3.6.1-2-lib.zip)
  • Xpm (xpm-3.5.1-1-lib.zip)
  • Zlib (zlib-1.2.3-lib.zip)


なお、 xpm に関しては、 developer package から simx.h が抜け落ちているらしい。従って、 source package をダウンロードし、その中に含まれる simx.h を MinGW の include 以下にコピーしてあげる必要がある。

追加パッケージ(DLL)インストール


上記 GnuWin の Developer files は、 DLL を呼び出すためのスタティックライブラリのみしか含まれていないため、実行時に利用する DLL を別途インストールする必要がある。

これらは上記パッケージの各ページにある、 Binaries の zip をダウンロードし、この中に含まれる bin/*.dll を任意のフォルダに展開する。 *.dll のみ選別するのが面倒なら、 bin 以下まとめて展開しても問題ない。このとき、展開先をたとえば D:/GnuWin/bin/ のように MinGW や MSYS のインストール先と分けておいたほうが、emacs 実行環境一式をどこか別のマシンなどに移動しやすくなる。

展開後、このフォルダには環境変数 PATH を通しておく。

利用するパッケージとダウンロードされるファイルを以下にまとめる。

  • GifLib (giflib-4.1.4-1-bin.zip)
  • Jpeg (jpeg-6b-4-bin.zip)
  • LibPng (libpng-1.2.37-bin.zip)
  • Tiff-win32 (tiff-win32-3.6.1-2-bin.zip)
  • Xpm (xpm-3.5.1-1-bin.zip)
  • Zlib (zlib-1.2.3-bin.zip)


Emacs のビルド


Emacs を windows 用にビルドする。

GNU公式: http://www.gnu.org/software/emacs/emacs.html

上記から、 Emacs 23.1 のソースをダウンロード。任意のディレクトリに展開する。
windows 用については、ここの nt ディレクトリ以下にあるので、そこへ移動。

> cd nt

ビルド手順はこのディレクトリにある INSTALL に記述されているので、読んでおく。

まずは makefile の作成。
コマンドプロンプトから、以下を実行。

> configure.bat

そして、ビルド。
コマンドラインから、以下を実行。

> mingw32-make

なお、このとき、古い Emacs 関連の環境変数は消しておくこと(特に、EMACSDATA, EMACSLOADPATH, EMACS_DIR)。

ビルドが無事完了したら、インストール。

> mingw32-make install INSTALL_DIR=D:/emacs

インストール先(D:/emacs)以下の bin/runemacs.exe をダブルクリックして、 emacs がエラーなく起動すれば ok。

IMEパッチを当てる


ここまでは、いわば本番までの予行演習。
emacs の IME 問題を解消するには、パッチを当ててビルドをする必要がある。

NTEmacs JP プロジェクト: http://ntemacsjp.sourceforge.jp/

上記から、パッチ(Emacs-23.1-IME.patch.gz)をダウンロード。解凍。
ここからの作業はコマンドプロンプトでもよいが、とりあえず MSYS rxvt を利用。

$ gzip -d Emacs-23.1-IME.patch.gz

Emacs-23.1-IME.patch を emacs23.1/ 以下に配置し、そこへ移動。
そして、パッチ当て。
$ patch -b -p3 < Emacs-23.1-IME.patch

lisp/international/w32-ime.el は手作業でバイトコンパイルしないとビルドエラーがでる。
バイトコンパイルには、さっき予行演習で作成した emacs を利用。

$ /d/emacs/bin/emacs -batch -f batch-byte-compile w32-ime.el

予行演習の跡地を一旦まっさらにしておく。

> mingw32-make clean
> mingw32-make distclean

ビルド。 configure の際には、 --enable-w32-ime をつけてあげる。あとは予行演習どおり。

> configure.bat --enable-w32-ime
> mingw32-make
> mingw32-make install INSTALL_DIR=D:/emacs_patched

同様に runemacs.exe を走らせ、起動した Emacs で IME のオンオフができれば ok。

設定


素の Emacs でもまだ日本語関連に難ありなので、
特に文字コードとフォント関係を初期化ファイル(.emacs)に記述。


(set-language-environment "Japanese")
(w32-ime-initialize)
(setq default-input-method "W32-IME")
(setq-default mw32-ime-mode-line-state-indicator "[--]")
(setq w32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]"))

(set-default-coding-systems 'sjis-dos)
(set-keyboard-coding-system 'sjis)
(set-terminal-coding-system 'sjis)
(set-clipboard-coding-system 'sjis-dos)
(setq file-name-coding-system 'sjis)
(setq w32-system-codeing-system 'sjis-dos)

(set-keyboard-coding-system 'japanese-shift-jis)

;(add-to-list
; 'default-frame-alist '(font . "MS ゴシック-11"))
(setq default-frame-alist
(append (list '(foreground-color . "black")
'(background-color . "cornsilk")
'(border-color . "red")
'(mouse-color . "mediumpurple")
'(cursor-color . "green")
'(font . "MS ゴシック-11")
'(width . 80)
'(height . 55)
'(top . 72)
'(left . 580)
'(line-spacing . 2)
)
default-frame-alist))

単純なフォントの指定だけなら、コメントアウトしている
(add-to-list 'default-frame-alist '(font . "MS ゴシック-11"))
だけでよいのだが、色とかサイズとかいろいろ設定しているので、ちょっと変えている。

http://www.gnu.org/software/emacs/manual/html_node/emacs/Fonts.html

この記事へのコメント

たけお
2011年01月09日 23:56
大変参考になりました。うまくいきました。
私もMeadowを使っていますが、一部の環境を引越しするついでに
Emacs23を使ってみることにします。 ありがとうございました。
2011年01月10日 01:19
おお、おめでとうございます。
結構分かりにくい書き方になってしまいましたが、参考にしていただき光栄です。
無事にインストールできて、こちらとしてもうれしく思います。

この記事へのトラックバック