Webtech Walker

prove.vim書いた

探してみるとproveのvimプラグインもあるっちゃあるけどいまいちしっくりくるものがなかったので自分で書いてみた。

hokaccha’s vim-prove at master - GitHub

機能としては

  • テストファイルから上位ディレクトリをたどってtというディレクトリがあるディレクトリをrootディレクトリとして、そこにcdしてprove -lvr的なことをする
  • local::libのディレクトリを指定できる。デフォルトは上で設定したrootディレクトリのextlibディレクトリ
  • それ以外のlibディレクトリも指定できる
  • 無名ファイルをproveできる
  • prove用のsyntax

な感じです。

:Prove {file}

でproveを実行できます。{file}は指定しなければカレントファイルを対象にします。ディレクトリを指定すると再帰的にproveしますが、あまり長いテストだとテストが終わるまでvimが固まるのでt以下を全部テストとかの用途にはあまりおすすめできません。vimprocとかで非同期にすれば解決する気もするのでそのうち対応したいです。

local::libのディレクトリはデフォルトで %proveroot%/extlib になっていますが、g:provelocallibdirで設定できるので

let g:prove_local_lib_dir = $HOME . '/perl5'

という設定をvimrcに書けば、ここで指定したところをlocal::libのディレクトリとして扱います。local::libは入ってる前提なのでもしlocal::libが入ってるところにパスが通ってなければ$PERL5LIBとかでパスを通しておく必要があります。

local::lib以外のディレクトリを指定したい場合はg:provelibdirsとb:provelibdirsを使って設定できます。これは配列で指定するので

g:prove_lib_dirs = ['/path/to/lib', '/path/to/lib2']

と設定するとproveの-Iオプションで指定したディレクトリを読みに行きます。b:provelibdirsも同じですが、こっちはバッファローカルな設定値で、プロジェクト毎に違う設定を読み込むような場合に使うことを想定しています。

プロジェクト毎に設定を読む方法は以下などを参照。

Vim-users.jp - Hack #112: 場所ごとに設定を用意する

syntaxはけっこう適当ですけどなんとなくわかる程度にはなってると思います。

このエントリーをはてなブックマークに追加