最近、また Emacs にはまっている。
ここ数年は vi やら eclipse やら JeditX やら xcode やらを広く浅く使っていて、 いまいちスッキリしない感じで、まぁ年なのか諦めていた。 Snow Leopardにアップグレードを期に、 ちょっと設定等を手入れしてMacOSX/Windowsで使い出したらすこぶる手になじむ。。。
はて、なんでEmacsを使うのを忘れていたのかんなぁ。。。
そう、当時 Emacs 20か 21 (mule-2.3だったかもしれん、、、)だったかなぁ。 UTF8/Unicodeを使う為にはMule-UCSとかいうパッケージが必要で、 そいつを組み合わせると普通に使えるのだが、起動も動作ももっさりしていまいちだった。。。
今日のEmacsはサクッとUnicode系の一群のcoding-systemが使えて、それなりに軽快に動作する。
良い時代になったなぁ。。。
MacOSX 上の定番は CarbonEmacsで、 かなりしっかりメンテナンスされており、実に安定している。ただ、ベースにしてるのがEmacs22だったり、Carbonベースだったり、32bitバージョンだったり、本当に細かく気になる人が気になる程度。
ふと気づくと 本家 Emacs では既に 64bit Cocoa版が構築でき、かつ日常作業で問題ならないくらいは安定してるらしい(1,2)。また、フォントの等幅調節設定や日本語入力等のinline patchなどが入手が可能で、 ほぼ CarbonEmacs を置き換えて使えるレベルになっている(と思う)。
なので、Cocoa Emacs 64bit を構築してみる。
ソースを取ってくる
うん、一番の難関は Bazaar という分散VCSを使う事かもしれない。。。準オフィシャルなGitレポジトリがあるので、Gitに慣れてる場合はこっちを使うのが吉。僕は、へたれなので git の方を使った。
- Bazaar レポジトリ: http://bzr.savannah.gnu.org/r/emacs/trunk/
- Git レポジトリ: git://repo.or.cz/emacs.git
取り敢えず、 ローカルネットに emacs.git のミラーレポジトリを立てて、そのマシン上でフォークして個人用の共用レポジトリを作る。 その個人用レポジトリから作業マシンに複製を展開する。 また、継続的にupstreamを追っかけるため、ミラーレポジトリもリモートとして登録する。
% ssh server # ローカルネットの server にログイン % cd /git % git clone --mirror git://repo.or.cz/emacs.git % git clone --bare --reference emacs.git emacs.git emacs-my.git ... % ssh client # 作業マシンにログイン % cd ~/work % git clone git+ssh://server/git/emacs-my.git emacs % cd emacs % git remote add upstream git+ssh://server/git/emacs.git % git fetch upstream
個人用レポジトリを挟んだのは、バックアップを意図してなんだが、、、git使いはそんな事はしないのかなぁ。。。分からんなぁ。。。
パッチをあてる
続いてMacEmacs JP から inline_patch を取って当てる。
% ssh client # 作業マシンにログイン % cd ~/work/emacs % git checkout -b topic EMACS_PRETEST_23_1_96 # 次いでに topic ブランチも作っとく % pathc -p0 < emacs-inline.patch
構築する
あとは、configure/make で問題が無ければ nextstep/Emacs.app の場所で 64bit Cocoa Emacs が構築される。
% ssh client # 作業マシンにログイン % cd ~/work/emacs % eval "$(PATH= /usr/libexec/path_helper -s)" # PATHをクリーンにする % ./configure --with-ns % make install % open nextstep/Emacs.app # Emacsの実行確認
なんともあっけなく構築できた。 ただ、僕は masterブランチの方にパッチを丁寧に当てた物(24.0.50とか)を使っている。すこぶる快適。
定期的追っかける
まぁ、忘れそうなので次いでに書いとく。
ミラーレポジトリは次のコマンドで更新する。
% ssh server # server にログイン % cd /git/emacs.git % git fetch
そして、作業レポジトリで upstream を追っかけるには
% ssh client # 作業マシンにログイン % cd ~/work/emacs % git fetch upstream % git rebase upstream/master topic # upstream 先端に rebase % git push origin :topic # topicブランチを削除し、 % git push origin topic:topic # 新しくtopicブランチをプッシュ
いまいち Git の使い方に慣れない/分からないので、間違ってるかもしれん。。。
そういえば、github にも Emacsのミラーレポジトリが上がってるので、そのうち生えてくるかもしれん。。。
それにしても覚える事が次から次と現れて、知恵熱が出っぱなしだなぁ。。。
初期設定のemacs.elはまた次回。
追記 (2010/05/06)
フォント以外の設定は、殆ど定型文っぽいので以下の用に設定した。
;; CocoaEmacs 対応 | |
(when (eq window-system 'ns) | |
(require 'ns-win) | |
;; JISキーボード円記号/バックスラッシュ対応 | |
(mac-translate-from-yen-to-backslash) | |
;; Option/Command キー を Super/Meta に割当 | |
(setq ns-command-modifier 'meta) | |
(setq ns-alternate-modifier 'super) | |
;; システムへ修飾キーを渡さない設定 | |
(setq mac-pass-control-to-system nil) | |
(setq mac-pass-command-to-system nil) | |
(setq mac-pass-option-to-system nil) | |
(define-key global-map [ns-drag-file] 'ns-find-file) | |
) | |
;; Cocoa inline_path 対応 | |
(if (featurep 'ns) | |
(set-language-info "Japanese" 'input-method "MacOSX")) | |
;; 日本語環境 | |
(set-language-environment 'Japanese) | |
(cond | |
;; UTF8サポートありならば、優先してUTF-8を使う | |
((memq 'utf-8 coding-system-list) | |
(prefer-coding-system 'utf-8-unix) | |
(setenv "LANG" "ja_JP.UTF-8") | |
) | |
) | |
;; 常に新規ファイルは utf-8-unix を使いたい | |
(if (memq 'utf-8 coding-system-list) | |
(setq-default buffer-file-coding-system 'utf-8-unix)) | |
;; |
フォントの設定は「Emacs23 の フォント設定」を参照
追記 (2010/05/12)
どうもポップアップダイアログが出たとき落ちる問題にはパッチが必要。
0 件のコメント:
コメントを投稿