Emacs23のEUC仮名

昔々のコードを保守していると、画面幅の制限から80文字に収めたくて1バイトの仮名を使っているところがたまにあります。
Emacs23にしてから文字コード判別に失敗するのは自前のいい加減なパッチとビルドと環境設定のせいだと思ってましたが、

http://www.m17n.org/mlarchive/mule-ja/201001/msg00004.html

のように修正されたらしいのでちょっと真剣にビルドしてみようと思います。

MinGWCygwin

我々の作業ではWindows用のSJISのプロジェクトとUNIX用のEUCのプロジェクトの両方の保守をしています。Cygwingrepの動作、特に日本語の検索が怪しいということで職場での普及の足かせ(このせいでsakuraエディタを使うとか言い出したり)になっています。lvを使うと良さそうなのですが、ざっくり試した感じでは、lvのMinGWでのコンパイルにはちょっと支障がありそうです。とりあえず Cygwinコンパイルする事にしました。

gccとmakeのバージョン

普及のためにはCygwinも普通のインストール手順で終わらせる事が望ましいのでバージョンは1.7です。gccは3.4.4、makeは3.81の選択がデフォルトのようです。

この時点で、emacsのnt/INSTALLに

    cygwin compiled make 3.81:           fails         fails?[7]

と書いてあるので嫌な感じですが、makeのバージョンは他の物を選べません。まぁダメならコンパイル時だけMinGWのmakeを使う事にして、インストールはしてしまう事にします。

最新ソースの取得

前述の通り、EUCの1バイト仮名の扱いは最新のソースを持ってこないと修正されていないようなので、

http://www.m17n.org/mlarchive/mule-ja/201001/msg00000.html
http://www.m17n.org/mlarchive/mule-ja/201001/msg00002.html

の記載の通りに、とにかく持ってきます。bzrの最適な使い方を考える前に、いまはemacsコンパイルができればいいので多少の非効率には目をつぶって。

画像関係のライブラリも今まで配置してあった物をそのまま使う事にします。ここが一番重要だった?

コンパイルする

だんだんいい加減になって来た気がするけど、まずはコンパイルできるか試します。自作PCでもケースのネジを締める前に起動確認するし。
コマンドの投入は Cygwinのターミナルからです。

cd /usr/local/src/emacs/trunk/nt
./configure.bat --cflags -I/cygdrive/c/GnuWin32/include/ \
                --ldflags -L/cygdrive/c/GnuWin32/lib \
                --prefix=/cygdrive/c/emacs/23.1.93

make
mkdir /cygdrive/c/emacs
make install

なんか起動できる物が出来上がりました。IMEのインライン入力も一応動いていますね。ここまでパッチ不要。日本語入力中のフォントと入力後のバッファのフォントとの違いが気持ち悪いです。インクリメントサーチとIMEの日本語入力も、表示のおかしさを除けば動作自体は可能のようです。-mno-cygwin もなんか自動的に付加されたみたいな。
あとは、オリジナルのソースを壊さないように、昔当てたIMEパッチと見比べながらどういった違いがあるのかを考えてみるという楽しい作業が待っているのですが、そろそろ休日も終わりそうです。

追試

うーん、make bootstrap したら make できなくなってる。どこかで MinGWのmake を呼んだ形跡が残ってるみたいだ。

もっかいきれいにしてやり直し。

その前に

とりあえず別のmake にしたら続くようになった。うーん。