2014年4月24日木曜日

OS X Mavericksにemacs 24.4.50を導入

追記:2014/11/04
emacs24.4がリリースされたためか,この記事へのアクセスが多いようですが,内容はemacs24.4の安定版がリリースされる前のものなので情報が古く,下記に紹介してあるインラインパッチはリリース版に当ててもビルドできません.新しい情報は,Plamo Linux日記さんの方で確認してみてください.



これまでemacs-23.4を日本語入力時にクラッシュが連発するのに耐えながら長らく使ってきました.

以前に何度かemacs 24系統をビルドしてみたものの,愛用しているwiden-window.elが使えなかったり,フルスクリーンがCocoaのnativeなものだけになってしまい別画面に移動するのが気持ち悪かったり,フルスクリーンで上部に文字が表示されないラインが残ったり等々,日本語入力の不具合を補って余りある不具合があったので,導入を断念していました.

最近フルスクリーンの問題や日本語入力時のクラッシュが解決されたという噂を聞きつけたので,試してみました.

まず,こちらから開発版のemacs-24.4.50.tar.gzをダウンロードしました.
日付は2014-04-23 09:02:25のものを用いました.

23.4ではフルスクリーンのパッチを当てる必要がありましたが,emacs24ではフルスクリーンをnativeで使えるようになっているので必要ありません.

あとは日本語インライン入力のためのパッチの入手ですが,本家のMacEmacs JPで正式にリリースされているのはemacs-24.3のものなので,Plamo Linux 日記さんの2014-04-17で配布されているemacs-24.4-20140417-inline.patchを拝借しました.
最初はこちらで配布されているバイナリを試してみたのですが,文章編集中に謎のリージョン指定が起こり,Ctrl-eを打つとそのリージョンの末尾まで飛ばされるという不具合が生じたので,自分でビルドしてみた訳です.

emacs-24.4.50.tar.gzとemacs-24.4-20140417-inline.patchを同じディレクトリに置き,ターミナルから
$ tar xvzf emacs-24.4.50.tar.gz
と打ちこんでemacs-24.4.50のソースを展開します.出来たemacs-24.4.50というディレクトリに移動し,
$ patch -p1 < ../emacs-24.4-20140417-inline.patch
としてパッチを当てます.後は
$ ./configure --with-ns --without-x
$ make -j2
$ make install
とすれば,nextstepというフォルダ内にEmacs.appが作成されるので,これをアプリケーションフォルダに移動させます.makeのオプション-j2は,プロセッサのコア数です.


さて,後は初期設定ファイル~/.emacs.d/init.elの編集です.
まず,分割されたウィンドウの大きさを自動で設定してくれるwiden-window.elの設定ですが,emacs-24になってwindow.elが大きく書き直されているそうで,bw-get-treeといった関数に始まり,色々な関数が無くなっているためemacs 23.4のときの設定では動きませんでした.解決策として,こちらからやや古めのwindow.elをダウンロードして,init.elでロードしてやると使えるようになります.少なくとも私の使い方では今の所不具合は見当たらないので,このままでいこうと思います.設定は次の通りです.
(load "window.el") ;widen-window.elではemacs24以上で存在しない関数が必要

;; widen-window フォーカスのある window のサイズが自動的に大きくなる
(require 'widen-window)
(global-widen-window-mode 1)
(setq ww-ratio 0.7)
 ;window widening が機能してほしいタイミングを追加
(setq ww-advised-functions
      (append ww-advised-functions
       '(;recenter
  windmove-up
  windmove-down
  windmove-right
  windmove-left)))

後は,emacs-24からcolor-themeを使わなくともthemeの設定が出来るようになりました.幾つか試してみたものの,イマイチピンと来るものがなかったので,githubのreplace-colorthemesでdesert-theme.elをダウンロードして設定をしました.
(setq custom-theme-directory "~/.emacs.d/themes/");themeファイルを入れるディレクトリ
(load-theme 'desert t t)
(enable-theme 'desert)


後は,TeX Stack Exchangeの”RefTeX broken in Emacs 24.3.1?"にあるように,
reftex-modeでreftex-referenceを動作させるとselect reference formatという画面が出てきて,referenceの選択画面にいくまでに変なワンステップが入るようになってしまいました.これはinit.elに
(setq reftex-ref-macro-prompt nil)
と記述しておけばよいそうです.

また,フルスクリーンの設定は
(setq ns-use-native-fullscreen nil)
(global-set-key [f9] 'toggle-frame-fullscreen)
と記述しています.上の一行でCocoaのnativeなフルスクリーンを用いるのではなく,emacs-23でのns-toggle-fullscreenのような動作になります.

emacs23に比べて若干動作が重いような気がしますが,今の所日本語入力でのクラッシュが起こっていないのでしばらく使い続けてみます.

スクリーンショットはこんな感じです。参照名がやたら長かったり、英語が怪しいのはご愛嬌ということで。