yujiro's blog

「インターネット上で正しい答えを得る最善の方法は、質問することではない。間違った答えを投稿することだ」by ウォード・カニンガム

Vim で快適にPerl を書く【Carton】

vimスクリプト言語書く時はsyntastic が便利ですよね。

Perl でもそれを使っていたんですが、carton でライブラリ入れてuse で呼び出そうとしたらエラー吐きまくりました。

vimrc の設定は下記になっていました。

let g:syntastic_enable_perl_checker = 1
let g:syntastic_perl_checkers = ['perl']

もちろん、スクリプトを carton exec ~.pl という風に実行すればエラーは出ないので、carton のpath が認識できていない模様。

調べてみたら大変素晴らしい記事を見つけました。

http://kesin.hatenablog.com/entry/2014/06/24/200000

vim-quickrun はとりあえずなしで、syntastic の設定だけしたら、ライブラリ認識されました。感激です。

ちなみに以下をvimrc に入れ込みました。

let g:syntastic_enable_perl_checker = 1
let carton_path = system('carton exec perl -e "print join(q/,/,@INC)"')
let lib_path = fnamemodify(finddir("lib", ";"), ":p")
let g:syntastic_perl_lib_path = join([carton_path, lib_path], ',')
let g:syntastic_perl_checkers = ['perl']

でも、vim を開く際に1行だけ赤文字で

syntastic: warning: variable g:syntastic_perl_lib_path should be a list 

と表示されてしまっている...

f:id:bambookun:20171023232723p:plain

どうやら syntastic_perl_lib_path の部分の右辺は list でないといけないみたいでした。

let g:syntastic_perl_lib_path = split(carton_path, ',\s*') + split(lib_path, ',\s*') 

と修正してやりました。

これで PerlQOL が少し上がりますかな!