読者です 読者をやめる 読者になる 読者になる

Vimでflymake時にlibをPERL5LIBに追加するperl5lib.vimを作った

Perlを書いていてsyntax check(perl -c)するときにuse句も実行され、@INCや$PERL5LIBパスからそのライブラリを探そうとする。
一般的なPerlプログラムの構成だと、プロジェクトの直下にlibディレクトリがあり、lib以下に自分で作成するモジュールやら、他の人のモジュールを置く。
実行時にはlibディレクトリがある直下の実行ファイルを起動する。 @INCにはカレントディレクトリ('.')が登録されているため、そこからライブラリを探索してくれる。

しかし、エディタでlib以下のファイルを編集しているときに、flymakeするとそのファイルを起点として探索するため、use句で他のライブラリを読み込んでいる場合探索できなくなり、flymakeがそこで失敗してしまう。
これを解決するために、Emacs使いはflymakeするときにPERL5LIBに編集中のCatAppのlibまでのパスを追加するelispを使うようだ。
そこで、同様にこのEmacs LispVim scriptに移植(yoppi/perl5lib)した。

僕はflymakeにはerrormarker.vimを使っているので、たとえば、ftplugin/perl/errormarker.vimに関数をコールするように記述しておく。

" Perl syntax check configurations for errormaker.vim

compiler perl
autocmd BufWritePost *.pl,*.pm silent make %

call perl5lib#set_perl5lib()