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

情報は力ではない

VimとかC++とかCUDAとか。

vim-themis, vim-owlを使えるようにした

vim scriptのテストを書きたいと思ったので、テストフレームワークを用意した。
vim-themisとvim-owlの2つを用意。github.com
github.com

vim-themisはvimspecの記述が気に入っている。
けれども、自分の知識が無いためだろうけどスクリプトローカルな関数を
テストすることがvim-themisでは出来ないような感じだったので
スクリプトローカルな関数をテストするためにvim-owlも用意した。

vim-owlを用意して最初のテストを通す際に詰まったことがあったので
備忘録として記述しておく。

テスト関数にabortを付けない

自分の癖で関数にはよくabortをつけるのだけれど、vim-owlのテスト関数にabortをつけると

Error detected while processing function owl#run:
Vim(call):E488: Trailing characters

といったエラーが出てくる。といってもテストはちゃんとしてくれてる。
まぁ、エラーは鬱陶しいのでテスト関数にはabortを付けないようにする。

テストする前にスクリプトローカルな関数を定義しているファイルをsourceしておく。

非常に当たり前のことだったが、これに気づくのに2時間くらいかかった。
自分の中で勝手に

let owl_SID = owl#filename_to_SID("file/to/path/hoge.vim")

とすると、そのhoge.vimをsourceしてくれると勘違いしていた。
実際には、:scriptnamesのリストの中から"file/to/path/hoge.vim"に一致するものを探して
そのSIDを取っている感じだった。
事前に"hoge.vim"をsourceしておかないと:scriptnamesの中には現れないので
owl#filename_to_SID()は0を返してくるのでスクリプトローカルな関数を呼んでも
エラーになるので注意。