Shammer's Philosophy

My private adversaria

LionにCocoa Emacsをインストール

OSもLionになったし、そろそろCarbonを卒業しようと、Cocoa版のEmacsを使用することにしました。以前も一度挑戦したけれども、インプットメソッドの都合で結局Carbonを使用し続けることに。具体的には、Ctrl+\でOS標準のインプットメソッドの入力切り替えをしたかったのだが、それがどうもうまくいかずにCarbonを使い続けることにしたことがありました。Cocoaでそれができるか調べてみて、こんなサイトを見つけました。

 Cocoa Emacsの設定とカスタマイズ--Snow LeopardEmacs 23
 http://builder.japan.zdnet.com/os-admin/sp_snow-leopard-09/20410802/

どうやら、有志の作ったパッチを使えばできるとのこと。うーん・・・このパッチの存在は知っていたはず。そして、以前試した時もこのパッチを使ったのですがどうもうまくいかなかったと記憶しているのですが・・・ともあれ、もう一度やってみることにしました。

手順は以下のとおりです。

  1. Emacsソースコードを入手
  2. MacEmacsJP(http://sourceforge.jp/projects/macemacsjp/)から、日本語入力パッチinline_patch-23.2-beta3.tar.gzを入手
  3. パッチを適用してビルド

Emacsソースコードは、

 curl -O ftp://alpha.gnu.org/gnu/emacs/pretest/emacs-23.2.94.tar.gz
 ※オプションは0(ゼロ)でなく、O(オー)

というコマンドで入手。

上記を揃えてビルドしようとしたがこんなエラー発生。

unrecognized section name in __DATA segment

よくわからなかったものの、あれこれ調べていてこんなサイトを見つけました。

 マスタカの ChangeLog メモ / 2011-07-31-2
 http://masutaka.net/chalow/2011-07-31-2.html

自分が入れようとしたバージョンはEmacs23.2.94なので、このサイトのバージョンとは異なりますがエラーは一緒。なので、このサイトで紹介されている以下のパッチを入手してビルドしなおしました。

patch-no-pie.diffとpatch-fix-title-bar.diffは、リンク先のOriginal Formatというリンクから入手できます。patch-src_unexmacosx.c.diffはリンク先の内容を同名のテキストで保存すればOK。patch-fix-title-bar.diffは23.2.94の場合は適用しなくても平気かもしれない。

Emacs本体のソースコードと、日本語入力パッチ、他に必要なパッチを入手してすべて同じディレクトリに置いたあとで以下のとおりに実行。

  1. curl -O ftp://alpha.gnu.org/gnu/emacs/pretest/emacs-23.2.94.tar.gz
  2. tar xzf emacs-23.2.94.tar.gz
  3. tar xzf inline_patch-23.2-beta3.tar.gz
  4. cd emacs-23.2.94
  5. patch -p0 < ../inline_patch-23.2-beta3/emacs-inline.patch
  6. patch -p0 < ../patch-no-pie.diff
  7. patch -p1 < ../patch-src_unexmacosx.c.diff
  8. patch -p0 < ../patch-fix-title-bar.diff
  9. ./configure --with-ns --without-x
  10. make bootstrap
  11. make install

configureのオプション、--with-ns は、Mac OS X 向けのバンドルを作成するように指示するためのオプションで、--without-x はX Windows Systemを使用しないようにするためのオプション。Cocoaを使用する場合は両方必須らしい。patchコマンドのpオプションについては、

 patchコマンド-pオプションの覚え書き
 http://d.hatena.ne.jp/zariganitosh/20080325/1206435474

を参考にしました。

上記のようにビルドすると、emacs-23.2.94/nextstep/にEmacs.appができるので、それをApplicationsディレクトリへコピー。そして、.emacs.d/init.elに以下の行を追加。

(setq default-input-method "MacOSX")

これで、Emacs使用時にCtrl+\をやるとOSのCommand+Space(英語キーボードなので)と同じようにGoogle日本語入力の英字とローマ字入力が切り替わる。また一つ作業終了。