Emacs Mac port とは
Carbon Emacs (GNU Emacs 22) をベースとして、 GUI 部分に Cocoa API を取り入れ GNU Emacs 23 に対応させたものです。64bit 版もビルドできます。
Carbon Emacs のメインテナーをされていた YAMAMOTO Mitsuharu 氏によってパッチという形で提供されています。
パッチはここで入手できます。
ftp://ftp.math.s.chiba-u.ac.jp/emacs/
Cocoa Emacs (GNU Emacs 23 を –with-ns でビルドしたもの) と比べ、色々と機能が追加されています。
詳しくはパッチに同梱されている README-mac に書いてあります。
Emacs Mac port に追加されている機能 にもまとめてみました。
Emacs Mac port という呼称が適切なのか自信はないですが、 README-mac やソースでは "Mac port", "GNU Emacs Mac port" という名前が使われているので、当ブログでは Emacs Mac port で統一しました。
それにしても、 Mac port と MacPorts が似ていてウェブ検索での情報収集がしにくいです。
Emacs Mac port のインストール
詳しい手順はパッチに含まれる README-mac に載っています。
以下は 2011年3月現在の Emacs 23.3 をビルドする手順です。(Xcode が必要です)
- http://www.gnu.org/prep/ftp.html の最寄りのサーバから emacs-23.3.tar.bz2 を落とす。
- ftp://ftp.math.s.chiba-u.ac.jp/emacs/ から emacs-23.3-mac-1.9992.tar.gz を落とす。 1.9992 の部分は最新のバージョンで。
-
ターミナルで
tar jxf emacs-23.3.tar.bz2 tar zxf emacs-23.3-mac-1.9992.tar.gz cd emacs-23.3 patch -p0 < ../emacs-23.3-mac-1.9992/patch-mac cp -r ../emacs-23.3-mac-1.9992/mac . cp ../emacs-23.3-mac-1.9992/src/* ./src/ cp ../emacs-23.3-mac-1.9992/lisp/term/mac-win.el ./lisp/term/ ./configure --with-mac --without-x make sudo make install mv ./mac/Emacs.app /Applications/
configure の
--prefix
オプションによってはsudo make install
の部分はmake install
でも可。
Cocoa Emacs とは違い、 self-contained ではないので、--prefix
を指定しないかぎり /usr/local 以下にインストールされます。
Emacs Mac port の設定
文字コードの設定
(set-language-environment 'Japanese) (prefer-coding-system 'utf-8) ;; クリップボードの文字コード (set-selection-coding-system 'utf-8) ;; 端末の文字コード (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) ;; ファイル名の文字コード (require 'ucs-normalize) (set-file-name-coding-system 'utf-8-hfs)
Emacs Mac port の場合、クリップボード用の文字コード selection-coding-system がシステムのデフォルト言語で初期化されます。
日本語ならば japanese-shift-jis 。上の例では utf-8 にしてますが、 japanese-shift-jis でも問題は無いです。
ただ、これを japanese-shift-jis 以外の Shift_JIS (例えば sjis, sjis-mac 等) にすると、バックスラッシュが半角の円記号に化けたりと不具合が出ます。関数 mac-string-to-pasteboard-string でその辺りの処理をしています。
フォントの設定
基本的には Cocoa Emacs の設定の仕方と同じです。
Emacs Mac port は Carbon Emacs がベースですが、 carbon-font.el は使えません。
http://macemacsjp.sourceforge.jp/index.php?MacFontSetting より引用
(create-fontset-from-ascii-font "Menlo-14:weight=normal:slant=normal" nil "menlokakugo") (set-fontset-font "fontset-menlokakugo" 'unicode (font-spec :family "Hiragino Kaku Gothic ProN" ) nil 'append) (add-to-list 'default-frame-alist '(font . "fontset-menlokakugo")) (setq face-font-rescale-alist '((".*Hiragino.*" . 1.2) (".*Menlo.*" . 1.0)))
-
アンチエイリアスに関して
Carbon Emacs にあった変数 mac-allow-anti-aliasing は削除されています。
システム環境設定のアピアランスで設定するか、Terminal から defaults で設定します。
defaults write "org.gnu.Emacs" AppleAntiAliasingThreshold 12
また、関数 font-spec の :antialias プロパティに nil か t をセットすることで、フォント毎の指定もできます。
-
フォント設定に関するバグ
http://d.hatena.ne.jp/setoryohei/20110113
3つの条件が重なると、バグが出るらしい。
当方でも inhibit-startup-screen (inhibit-startup-message, inhibit-splash-screen) を t にしていると、□○△の記号類が半角サイズで表示される等、フォントが正しく設定されないのを確認しました。 Emacs Mac port でも再現性があります。
使えるフォントは *scratch*
で
(insert (prin1-to-string (x-list-fonts "*")))
これを評価すれば全て表示されます。
Cocoa Emacs よりも太字が使えるフォントが増えていたりと、選択肢が多くなっているはずです。
-
Monaco 10
Emacs Mac port で Monaco 10 に設定すると、斜体字は太字よりも太くなり、太字はぼやけてしまいます。
アンチエイリアス無しで Carbon Emacs と同じようなフォント設定にするのは難しいようです。
ちなみに Cocoa Emacs では Monaco の太字は使えません。 -
M+とIPAの合成フォント
無料で使えます。 MigMix 1M, MigMix 2M, Migu 1M が等幅フォントで太字も含む。
http://mix-mplus-ipa.sourceforge.jp/
その他の設定
Emacs Mac port のマウススクロールは非常に滑らかです。が、何らかの事情でマウススクロールを無効にしたい場合はこのようにします。
(add-hook 'window-setup-hook (lambda () (when (fboundp 'mac-mouse-wheel-mode) (mac-mouse-wheel-mode 0))))
単に ~/.emacs.d/init.el
に (mac-mouse-wheel-mode 0)
と書き込んでも無効にはなりません。
詳しくは mac-win.el の after-init-hook に追加している個所を参照。