Subscribed unsubscribe Subscribe Subscribe

emacsでのPATHとperl-completion.elのplcmp-installed-modulesでワケ分からなくなったメモ

Emacs Perl Mac

自分は(たぶん)Mac Portsで入れた/opt/local/bin/perlを主に使っている。
で、/usr/bin/perlでなく/opt/local/bin/perlを優先的に使うように、.zshrcで

export PATH=/opt/local/bin:/opt/local/sbin:/usr/local/bin:$PATH

と設定してあり、CPANでモジュールをインストールするときも/opt/local/bin/cpanで入れていた。


で、perl-completion.elを使っていて、モジュールのperldocを参照しながら書きたくて"C-c d"とかでインストール済みモジュールを調べようとすると、どうもインストールしてあるはずのモジュールが出てこない。
どうやら/usr/bin/perlの方のモジュールが一覧表示されているらしい。


どういう仕組みになっているんだろう、とplcmp-get-installed-modulesあたりを追いかけてみると、途中で

find `perl -e 'pop @INC; print join(q{ }, @INC);'`

というコマンドの実行結果を利用している部分があることを発見。
ここで使われるperlコマンドはおそらくemacs内でPATH指定していなければ普通に/usr/bin/perlを使われてしまう。


ということはemacsの中でも.zshrcと同様にPATHを変更してやる必要があるのか、と~/.emacs.el内に

(setenv "PATH"
        (concat "/opt/local/bin:"
                "/opt/local/sbin:"
                "/usr/local/bin:"
                (getenv "PATH")))

というのを追加してみたところ、うまく/opt/local/bin/perlで使うモジュールのドキュメントを参照できるようになった。