Carbon Emacsのinfoの再設定

Carbon EmacsにNetInstallでNavi2chをインストールしたのですが、infoにNavi2chが見当たらず、またターミナルの
infoで見るよりも一覧候補が少ないことに気がつきました。

Naiv2chのinfoファイルは、/Applications/Emacs.app/Contents/Resources/share/info/ に置いてあるのですが
このパスが、emacsにうまく認識されていないようです。
Info-default-directory-listにきちんと書かれているのですが、何故か無視されてしまいます。


すごく気になるので調べてみました。
まず、Info-directory-list、Info-default-directory-listは下記のように値がセットされています。

Info-directory-list
("/Applications/Emacs.app/Contents/Resources/info" "/Applications/Emacs.app/Contents/Resources/extra/info")

Info-default-directory-list
("/Applications/Emacs.app/Contents/Resources/share/info/" "/usr/local/share/info/" "/usr/local/info/" "/usr/local/gnu/info/" "/usr/local/gnu/lib/info/" "/usr/local/gnu/lib/emacs/info/" "/usr/local/emacs/info/" "/usr/local/lib/info/" "/usr/local/lib/emacs/info/" "/usr/share/info/")

それぞれの変数の役割ですが、

  • Info-default-directory-list
  • Info-directory-list
    • 実際にinfoを使用する際に検索する対象となるディレクトリリス
    • 「M-x info」したときに、Info-default-directory-listかINFOPATHを使用して自動的に値がセットされる

Info-directory-listは、環境変数INFOPATHが定義されていなければ、Info-default-directory-listの値が
セットされます。そうでなければINFOPATHがセットされます。

zqwellの環境では、特にINFOPATHは定義していなかったので、てっきりInfo-default-directory-listの値が
セットされると思っていました。でも実際は上述のとおり、違う値になっています。
もしやと思い、emacs上で

M-! env
INFOPATH=/Applications/Emacs.app/Contents/Resources/info:/Applications/Emacs.app/Contents/Resources/extra/info

とたたいてみると、INFOPATHが定義されています。Carbon Emacsだからなのか、emacsではこうなるのかわかりませんが、
勝手にINFOPATHが定義されているためにInfo-default-directory-listが使われない理由となっているようです。

ここまで分かれば、あとはINFOPATHを.bash_profileにでも書いておけば解決です。

# Infoのパス追加
INFOPATH=/usr/local/share/info:/usr/local/info:/usr/local/gnu/info:/usr/local/gnu/lib/info:/usr/local/gnu/lib
/emacs/info:/usr/local/emacs/info:/usr/local/lib/info:/usr/local/lib/emacs/info:/usr/share/info:$INFOPATH
# Carbon Emacsのinfo パス追加
INFOPATH=/Applications/Emacs.app/Contents/Resources/info:/Applications/Emacs.app/Contents/Resources/extra/inf
o:/Applications/Emacs.app/Contents/Resources/share/info:$INFOPATH
export INFOPATH

(Info-default-directory-list、Info-directory-listに出てきたパスを全て書いています。)

動作確認としては、

$ source .bash_profile
$ /Applications/Emacs.app/Contents/MacOS/Emacs
M-x info   #emacs上で実行

として、infoの一覧候補が前より追加されていればOKです。全体にINFOPATHを反映させるために一旦、再起動しましょう。

ちなみにInfo-directory-listは、

("/Applications/Emacs.app/Contents/Resources/info" "/Applications/Emacs.app/Contents/Resources/extra/info" "/Applications/Emacs.app/Contents/Resources/share/info" "/usr/share/info" "/Applications/Emacs.app/Contents/Resources/share/info/" "/usr/share/info/")

となっており、きちんと反映されていることが分かります。

まとめ

$INFOPATHはきちんと設定しよう