MacBookAir (w/ Lion) に Cocoa Emacs をインストール | 忘れたらググればいい

2011年12月1日木曜日

MacBookAir (w/ Lion) に Cocoa Emacs をインストール

Carbon Emacsからの卒業

特に不満はないのだけれど,前から移行したいなと思っていたので,思いきって移行する.

ソースからコンパイル

ちょっと調べてみると,一応バイナリの配布もあるみたいだけど,ソースからコンパイルしている人が多数.せっかくなのでソースからのコンパイルをやってみる.要Xcode.

Emacs23 (Cocoa Emacs) 入門から中毒まで : 紹介マニア
インストール手順だけじゃなくて,使い方までまとまってる.

いろんなサイトでの実行例が23.3aだったので,そのまま23.3aのファイルをダウンロードしてみたけど,なぜかサイズが319Bのファイル... そんな小さいわけないだろう,と思って調べてみたら23.3bがつい最近出てたみたいなので23.3bにしてみる.

しかし,↑のサイトの通りにコンパイルしようと思ったら途中でコケる.Lionだとダメっぽい.そこで,さらに調べてみるといろいろパッチが出てるみたいなので,当てる.ついでなのでLionのフルスクリーン対応パッチも当てる.IMEパッチは当てない (SKK使うのでいらない).

MacBook Air with Lionセットアップ - 日々の報告書

Emacs on OSX 10.7(Lion)
PDFです.

# 作業ディレクトリ作成
mkdir emacs-23.3-build
cd emacs-23.3-build

# ソースダウンロード
curl -O http://ftp.gnu.org/pub/gnu/emacs/emacs-23.3b.tar.gz

# 各種パッチダウンロード
curl -O https://trac.macports.org/raw-attachment/ticket/30268/patch-no-pie.diff
curl -O https://trac.macports.org/raw-attachment/ticket/30268/patch-fix-title-bar.diff
curl -O https://trac.macports.org/export/77151/trunk/dports/editors/emacs/files/patch-src_unexmacosx.c.diff
# Lionのフルスクリーン対応
curl -O http://cloud.github.com/downloads/typester/emacs/emacs-23-lion-fullscreen-test.patch

# 展開
tar xvfz emacs-23.3b.tar.gz
cd emacs-23.3

# パッチを当てる
patch -p0 < ../patch-no-pie.diff
patch -p0 < ../patch-fix-title-bar.diff
patch -p1 < ../patch-src_unexmacosx.c.diff 
#  can't find file to patch at input line 3
#  Perhaps you used the wrong -p or --strip option?
#  The text leading up to this was:
#  --------------------------
#  |--- src/unexmacosx.c.orig 2011-01-08 12:45:14.000000000 -0500
#  |+++ src/unexmacosx.c 2011-03-21 04:44:57.000000000 -0400
#  --------------------------
#  File to patch: src/unexmacosx.c
patch -p1 < ../emacs-23-lion-fullscreen-test.patch

# configure, make, install
./configure --with-ns --without-x
make bootstrap
make install
nextstepの中にEmacs.appができるので,/Applications に移動して使う.ちゃんとフルスクリーンも対応してる.

.emacsの修正

Carbon Emacsの設定そのままだとエラーが出たのでいくつか修正.

; これがあるとエラーが出る
;(utf-translate-cjk-mode t)

; window-system が mac から ns になったので関連するところを修正
;(if (eq window-system 'mac) 
(if (eq window-system 'ns)

; carbon-font でのフォント設定はできない
;      (require 'carbon-font)
;      (fixed-width-set-fontset "hiramaru" 16)
; フォントの設定
; http://leadproject.web.fc2.com/FC2/Unix_App_on_Lion_files/emacs.pdf
      (when (>= emacs-major-version 23) 
        (set-face-attribute 'default nil :family "monaco" :height 140)
        (set-fontset-font
         (frame-parameter nil 'font)
         'japanese-jisx0208
         '("Hiragino Maru Gothic Pro" . "iso10646-1"))
        (set-fontset-font
         (frame-parameter nil 'font)
         'japanese-jisx0212
         '("Hiragino Maru Gothic Pro" . "iso10646-1")) 
        (set-fontset-font
         (frame-parameter nil 'font)
         'mule-unicode-0100-24ff
         '("monaco" . "iso10646-1"))
        (setq face-font-rescale-alist
              '(("^-apple-hiragino.*" . 1.2)
                (".*osaka-bold.*" . 1.2)
                (".*osaka-medium.*" . 1.2)
                (".*courier-bold-.*-mac-roman" . 1.0)
                (".*monaco cy-bold-.*-mac-cyrillic" . 0.9) (".*monaco-bold-.*-mac-roman" . 0.9)
                ("-cdac$" . 1.3))))

; 透明度が%表示だと反映されない
; (add-to-list 'default-frame-alist '(alpha . (80 70)))
(add-to-list 'default-frame-alist '(alpha . (0.8 0.7)))
まだ修正が必要かもしれないけど,とりあえずエラーはなくなった.

SKKのインストール

Mac Book Airの方にはSKKを入れてなかったのでインストール (AquaSKKは入れてたけど).

curl -O http://openlab.ring.gr.jp/skk/maintrunk/ddskk-14.3.tar.gz
tar xvzf ddskk-14.3-tar.gz
cd ddskk-14.3
SKK-CFG のコメントを外す.
;;; Apple Mac OS X における self-contained な Carbon/Cocoa Emacs の設定例:
(setq SKK_DATADIR "/Applications/Emacs.app/Contents/Resources/etc/skk")
(setq SKK_INFODIR "/Applications/Emacs.app/Contents/Resources/info")
(setq SKK_LISPDIR "/Applications/Emacs.app/Contents/Resources/site-lisp/skk")
(setq SKK_SET_JISYO t)
make&installで完了.
make install EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs

(2011.12.6 追記) EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs が必要.

ddskk 14.2 をインストールする際の注意点 - My Emaps

必要な設定を.emacsにしておく.
;; AquaSKK 対策
(setq mac-pass-control-to-system nil)

;; AquaSKK と辞書を共用
; skkserv
(setq skk-server-host "localhost")
(setq skk-server-portnum 1178)
AquaSKK側もskkservの設定をしておく.

ちゃんと比較はしてないけど,明らかにCarbon Emacsより起動が速い.たぶん,プログラムそのものの実行が速くなったというよりも,余分なelispを読まなくなったんだと思う.