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から参照できるところのドキュメントを探したりできるようにする方法はあるのかなぁ