自分でインストールした Org-mode の Info を見たい

Emacs に付いてくる Org-mode は古いので、自分で最新のものをダウンロードしてきて使うことにした。make info-installして、さて Info を読もうと思って M-x org-infoしたら、しれっと古い方が表示された。M-x infoで出てくる Info ファイルのもくじにある Org-mode の項も、古い方。

それまでの Info の設定と環境

自分でインストールした elisp の Info は ~/.emacs.d/info に入れ、init.el

(add-to-list 'Info-additional-directory-list "~/.emacs.d/info")

と書いて、Info から見られるようにしている。
他には DDSKK の Info がここに入っていて、M-x infoで表示される Info のもくじに表示されている。
Emacs 23.3.1とOrg-mode 7.7。

問題

Info-additional-directory-listは優先順位が高くない。なので、Info のもくじやM-x org-infoでは新しい org-mode の Info ファイルが認識されない。

Emacs での Info ファイルのパスの変数について

関係する変数は以下の4つ。

Info-directory-list
Info ファイルを探すディレクトリのリスト。
Info-additional-directory-list
Info ファイルを探す追加のディレクトリのリスト。優先度はInfo-directory-listより低い。
Info-default-directory-list
自動的に生成されるリスト。Info ファイルがありそうなディレクトリのリスト。
INFOPATH
シェルの環境変数

Info ファイルを探すのに使われる変数の一つがInfo-directory-list。ただ、この変数は最初は空 (nil) で、Info が呼ばれた時に初期化される。INFOPATH が設定されている場合は INFOPATHの値がセットされる。INFOPATHを設定していない場合はInfo-default-directory-listのうち実際に存在するパスがセットされる。ただし、INFOPATHの最後がコロンの場合には、INFOPATHInfo-default-directory-listがこの順に結合されたリストがセットされる。
Info ファイルを探すのに使われるもう一つの変数がInfo-additional-directory-list。追加で指定したいディレクトリがあればこの変数にセットする。
検索の優先順位には注意が必要。リストの先頭に近いディレクトリから検索される。さらに、Info-additional-directory-listは、Info-directory-listの後に検索される。同名の Info ファイルが存在する場合にはInfo-directory-listの方のファイルが表示される。
検索の優先順位を制御したい場合は、INFOPATH を設定すればよい。

対処方法

INFOPATHを設定する。例によって MacEmacs.app はシェルの環境変数を引き継いでくれないので、init.el

(setenv "INFOPATH" (concat "~/.emacs.d/info:" (getenv "INFOPATH")))

と書く。
パスの最後にコロンを忘れない(全部ここに書き出すのならいらない)。