2011-02-13

Mac OS X で Dired の日本語ファイル名の並び順がおかしい場合

Emacs の環境変数 LANG が UTF-8 の場合、 Dired の日本語ファイル名の並び順がおかしくなります。
これは Mac OS X の ls が LANG の値を見てランダムな並び順を出力するために起こります。
Emacs の設定ファイルに (setenv "LANG") や (setenv "LANG" "C") などと書けば正常な並び順になります。

普段は LANG=ja_JP.UTF-8 で、 Dired から ls を呼ぶ時だけ LANG=C にするには、以下のように設定します。

(setenv "LANG" "ja_JP.UTF-8")

(defadvice insert-directory
  (around setenv-LANG activate compile)
  "Set environment variable LANG to C."
  (let ((process-environment (copy-sequence process-environment)))
    (setenv "LANG" "C")
    ad-do-it))

動作確認は Mac OS X 10.6 と GNU Emacs 22 でしています。