Emacs23.4 for Mac OSX

メモっておかないと忘れてしまいそうなので。

http://macemacsjp.sourceforge.jp/index.php?CocoaEmacs
http://henry.animeo.jp/wp/?p=1624

この2つのページを参考に。

emacs-inline.patchのemacs23ブランチの先頭から emacs-inline.patch と font.patch を取ってきてあて、あとは上記ページで言及されている emacs-23-lion-fullscreen-test.patch と fix-shiftmodifier-patch-for-emacs-inline-patch.diff をあてて、あとは

CC=gcc-4.2 CXX=g++-4.2 ./configure --with-ns --without-x --without-dbus
make bootstrap -j4
make install
cp -r nextstep/Emacs.app /Applications

ただ、どれかのパッチの副作用だとおもうのですが、 .emacs で (toolbar-mode nil) しているのにツールバーが消えないんですよね……

フォント設定

ネット上で見かけた MacOS X 用のフォント設定に足し引きして以下のように。

monaco をベースに、JIS 文字セットはヒラギノ丸ゴシック。jisx0208 は jisx0213 に含まれるはずですし、jisx0212 も実用上必要な物は 0213 に含まれているはずと信じつつ。

ちなみに、ギリシャ文字は全角で表示したい派なので、ギリシャ文字やキリル文字は特別な設定をしていません。JISに含まれるのでそのまま全角表示されます。

(if (eq window-system 'ns)
    (when (>= emacs-major-version 23)
      (setq fixed-width-use-QuickDraw-for-ascii t)
      (setq mac-allow-anti-aliasing t)
      (set-face-attribute 'default nil
                          :family "monaco"
                          :height 140)
;;; JIS 文字セット
      (set-fontset-font
       (frame-parameter nil 'font)
       'japanese-jisx0213-1
       '("Hiragino Maru Gothic Pro" . "iso10646-1"))
      (set-fontset-font
       (frame-parameter nil 'font)
       'japanese-jisx0213-2
       '("Hiragino Maru Gothic Pro" . "iso10646-1"))
      (set-fontset-font
       (frame-parameter nil 'font)
       'katakana-jisx0201
       '("Hiragino Maru Gothic Pro" . "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)))))

キーボード設定など

UTFネイティブなシステムだとときどき起きる、バックスラッシュを入れたいのに円記号が入ってしまう問題が MacOS でも発生。
ついでに、ドラッグアンドドロップでファイルを開くように。

(if (eq window-system 'ns)
;; for mac
    (when (>= emacs-major-version 23)
      (define-key global-map [ns-drag-file] 'ns-find-file)
      (define-key global-map [?\] [?\\])
      )
)