Get the incredible hacking tool. (Emacs 23.2.91 + Mac port patch)

(2010年11月17日の更新記事です.)

Emacs.app の build.

Terminal.appで,

mkdir work && cd work
wget ftp://alpha.gnu.org/gnu/emacs/pretest/emacs-23.2.91.tar.gz
wget ftp://ftp.math.s.chiba-u.ac.jp/emacs/emacs-23.2.91-mac-1.999.tar.gz
tar xzf emacs-23.2.91.tar.gz
tar xzf emacs-23.2.91-mac-1.999.tar.gz
cd emacs-23.2.91
patch -p 0 <../emacs-23.2.91-mac-1.999/patch-mac
cp -r ../emacs-23.2.91-mac-1.999/mac mac
cp ../emacs-23.2.91-mac-1.999/src/* src
cp ../emacs-23.2.91-mac-1.999/lisp/term/mac-win.el lisp/term
cp nextstep/Cocoa/Emacs.base/Contents/Resources/Emacs.icns mac/Emacs.app/Contents/Resources
./configure --with-mac --without-x
nice make -j `sysctl -n hw.availcpu`
sudo make install


Then,

open mac/Emacs.app

で,問題なく動いたら,アプリケーションフォルダへ:

mv !^ /Applications/

.

設定

フォントの幅を揃えるには,

(when (and (eq window-system 'mac)
	   (>= emacs-major-version 23))
  (create-fontset-from-ascii-font "Menlo-12:weight=normal:slant=normal"
				  nil
				  "menlokakugo")
  (set-fontset-font "fontset-menlokakugo"
  		    'unicode
  		    (font-spec :family "Hiragino Kaku Gothic ProN" :size 12)
  		    nil
  		    'append)
  (set-fontset-font "fontset-menlokakugo"
		    'japanese-jisx0208
		    '("Hiragino Kaku Gothic ProN" . "iso10646-1"))
  (set-fontset-font "fontset-menlokakugo"
		    'japanese-jisx0212
		    '("Hiragino Kaku Gothic ProN" . "iso10646-1"))
  (set-fontset-font "fontset-menlokakugo"
  		    'mule-unicode-0100-24ff
  		    '("menlo" . "iso10646-1"))
  (add-to-list 'default-frame-alist
	       '(font . "fontset-menlokakugo"))
  (setq face-font-rescale-alist '((".*Hiragino.*" . 1.2)
				  (".*Menlo.*" . 1.0))))


これでフォントの幅は揃うが,alphabet のみの行と日本語を含む行の高さが揃わない.
山本氏が,「[Macemacsjp-users 1678] Cocoa Emacs のピコピコ問題」で指摘なさっている問題と同様の様です.Mac port patch では,src/macfont.c (2050行あたり)を弄れば良さそうですが,良く分かりません.

# う〜んと,Menlo 用条件を追加すれば良いのかな.試してみたらこれで OK そう.
# 以下の式を Times の条件式の後に追加:

	      || (CFStringCompare (family_name, CFSTR ("Menlo"), 0)
	          == kCFCompareEqualTo)

Mac port patch のフルスクリーンは,snow leopard で追加された,マウスカーソルをスクリーン下端に近づけると Dock を表示するモードになっている.
フルスクリーンコマンド:

(defun toggle-fullscreen ()
    (interactive)
    (if (frame-parameter nil 'fullscreen)
	(set-frame-parameter nil 'fullscreen nil)
      (set-frame-parameter nil 'fullscreen 'fullboth)))