Subscribed unsubscribe Subscribe Subscribe

Carton環境でのflymakeとperl-completion

Perl Emacs

cartonを使って<PROJECT ROOT>/local以下にモジュールを入れて、それを使う前提で書いているファイルを編集していると、普通にperl -wcしても依存モジュールを見つけられなくてerrorになってしまうので、flymakeが思うように動いてくれない。
ので、Project::Libsを使ってflymake-perl-initをちょっと変更してやる。

<PROJECT ROOT>/local以下も探索対象にするため、こんなかんじに。

(defun flymake-perl-init ()
  (let* ((temp-file   (flymake-init-create-temp-buffer-copy
                       'flymake-create-temp-inplace))
	 (local-file  (file-relative-name
                       temp-file
                       (file-name-directory buffer-file-name))))
    (list "perl" (list "-MProject::Libs lib_dirs => [qw(local/lib/perl5)]" "-wc" local-file))))

これでflymakeに関しては問題ないのだけど、perl-completionでモジュールを検索したりするときにPATHが通らなくて見つからない。
plcmp-cmd-set-additional-lib-directoryコマンドを呼んで一度PERL5LIBに追加してしまえば届くようになるけど、これはplcmp--PERL5LIB-directories(perl-completionの中でPERL5LIBに設定して使うもの)がどんどん追加されていってしまうので何だか気持ち悪い。


plcmp--PERL5LIB-directoriesを汚さずにProject::Libsから参照できるところのドキュメントを探したりできるようにする方法はあるのかなぁ