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)))

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

Terminal.appで,

mkdir work && cd work
wget ftp://alpha.gnu.org/gnu/emacs/pretest/emacs-23.2.90.tar.gz
wget ftp://ftp.math.s.chiba-u.ac.jp/emacs/emacs-23.2.90-mac-1.998.tar.gz
tar xzf emacs-23.2.90.tar.gz
tar xzf emacs-23.2.90-mac-1.998.tar.gz
cd emacs-23.2.90
patch -p 0 <../emacs-23.2.90-mac-1.998/patch-mac
cp -r ../emacs-23.2.90-mac-1.998/mac mac
cp ../emacs-23.2.90-mac-1.998/src/* src
cp ../emacs-23.2.90-mac-1.998/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


フォントを揃えるには,

(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)
  (add-to-list 'default-frame-alist '(font . "fontset-menlokakugo"))
  (set-fontset-font
   (frame-parameter nil 'font)
   'japanese-jisx0208
   '("Hiragino Kaku Gothic ProN" . "iso10646-1"))
  (set-fontset-font
   (frame-parameter nil 'font)
   'japanese-jisx0212
   '("Hiragino Kaku Gothic ProN" . "iso10646-1"))
  (set-fontset-font
   (frame-parameter nil 'font)
   'mule-unicode-0100-24ff
   '("menlo" . "iso10646-1"))
  (setq face-font-rescale-alist
	'((".*Hiragino.*" . 1.2)
	  (".*Menlo.*" . 1.0))))


Mac port patchを使うならフルスクリーンの快適さを一度でも味わっておきたい.
フルスクリーンコマンド:

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

古い emacs (22等) で wheel scroll 関連を弄っている人は,一度コメントアウトして挙動を確認してみて欲しい.多くの人は Mac port patch のスクロールの挙動を気に入ると思う.
また,23.2の emacs news を

view-emacs-news

で見て,新たに本体に取り込まれたモジュールを確認し,

list-load-path-shadows

で意図しない shadowing がないかを確認しておくとトラブル除けになる.

Vul vs Liebermanの感想

Vul et al.がSocial neuroscienceでの統計手法について問題提起し,問題(issue)が大きく報じられLieberman et al.によって反駁された件について感想を書きます.
この件につきまして,vikingさんのブログに詳しい解説があります(http://www.mumumu.org/~viking/blog-wp/?p=2396http://www.mumumu.org/~viking/blog-wp/?p=2429).


今回,Vul et al., Lieberman et al.双方が対象論文の著者に問い合わせることによって議論を進めている点が私は気に掛りました.つまり,査読済であるはずの論文で報告された内容(と雑誌の掲載基準)が,その論文によって主張されている事項の信憑性に対して,十分な情報を提供していないということになります.今後は個々の論文でそれらの事項を記述するか,または,雑誌の査読時の検討項目として明示的に表明される必要があるのではないでしょうか.

Speed up your Safari with vacuuming Cache.db (2)

以前,

最近,Safariの初回起動時に虹色カーソルが回り使える様になるまでに時間が掛かる様になった.

そこで,キャッシュファイルをvacuumすることにした.

(20080724変更)
場所は,

/private/var/folders/??/??/-Caches-/com.apple.Safari/Cache.db

(??は不定).

シェルで以下の様に入力:

sqlite3 Cache.db vacuum

の様に書いていたが,最近環境を再構築したらキャッシュのパスが変更されていたため,スクリプトが動かなくなってしまった.環境構築の度にキャッシュのパスを探してスクリプトを書くのは面倒なので,shスクリプトを書いた.上の内容からスクリプトを書くのが面倒でキャッシュを再構築していない人も以下のスクリプトをCopy & Pastするだけで使えるので,その効果を確認してみて欲しい.

(20090206,よりスマートなスクリプトに変更, thanx to 通りすがりさん)

#!/bin/sh
sqlite3 `getconf DARWIN_USER_CACHE_DIR`/com.apple.Safari/Cache.db vacuum


*おまけ* こちらはMail.app用:

#!/bin/sh
sqlite3 ~/Library/Mail/Envelope\ Index vacuum

Get more done with changing key-bindings of your MacBook

System Preferences -> Keyboard & Mouse -> Modifier Keys...

  • Caps Lock Key: Control


KeyRemap4MacBook.version 5.1.0

    • FN to Enter
    • Return to Semicolon
    • Semicolon to Return (増井スペシャル)
    • Space to Control_L (+ When you type Space only, send Space) + [KeyRepeat] (親指コントロール)
  • Emacs Mode
    • C-h
    • C-i
    • C-[
    • C-m
    • C-pnbf
    • C-y
    • C-v
    • Opt-v
  • Remapping for Mac OS X Features
    • Drop Shift+[F1..F12]

LiveDictionary (w/ Eijiro)のHotKey

  • Enter

キー入力についてのメモ

KeyRemap4MacBookを用いて,Space to Control_L (+ When you type Space only, send Space) + [KeyRepeat]を使用する様になって思ったこと.

この機能は,人間を主としたジェスチャー入力と機械を主としたボタン入力との際であると思う.人間の行動のニュアンスを読み取るインターフェイスなんかを作りたい.