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

poshcomplete-vim の補完方法とかいろいろ変更した

いろいろ変更して自分でも、よく分からなくなりそうなので備忘録的に書く

cd01/poshcomplete-vim

screencast

ローカルサーバを立てるようにした

最初に作ったときは、PowerShellスクリプトで補完候補を標準出力して、 その結果から補完していたけど、それだと、補完候補を更新するたびに、 PowerShell が起動するので遅かった。
OmniSharp を見てみると、Nancy という .NETSinatra ライクなフレームワーク を使ってローカルサーバを立てて、そこから補完候補を取得するようになってた ので、ローカルサーバに POST して、補完候補を JSON で取得するようにしたら、 かなり速度が改善した。

いちいちローカルサーバを立てるのが面倒だけど、 call poshcomplete#StartServer() を呼び出すと、バックグラウンドで実行し続けるようにできた(要 vimproc)ので、 面倒なので、タスクスケジューラで vim.exe -c "set ft=ps1 | call poshcomplete#StartServer() | q" とか起動してると面倒くさくないから、とりあえずそうしてみている。
常に起動していても、30MB くらいしかメモリ食わないので、 Chrome とかインストールしてると起動してなくても、なんかメモリ食いまくってたりするので、 30MB くらいなら、まあいいかという感じ。

自動でローカルサーバを起動するようにすると、思ったよりイベントが発生してたりして、 今度は起動がモッサリしてウザかったので、自分で起動するようにしてる。

補完できるものが増えた

@sgur さんが、いろいろ試してくれていて、そういったものをいくつか取り込ませてもらった。
その中で、 CommandCompletion.MapStringInputToParsedInput というのがあって、これを使うようにしたので、 以前は、コマンドレットとオプションくらいしか補完できなかったので、 定義済みの変数とか、オブジェクトの持っているメソッドとかも補完できるようになった。

AppVeyor

AppVeyor でテストを回すようにした。
Vim プラグインのテストを AppVeyor 上で動かすのに困っていたけど、thinca さんの themis.vim のおかげで、できるようになった。
ついで、ビルドしたものとかをまとめて ZIP ファイルにすることもできるようになったので、 とりあえずインストールしてもらうのとかは、ちょっとラクになった気がする。
ただ、それを使うと、ローカルサーバを立てる exe ファイルを起動するときに セキュリティの警告が出るので、それを解除しないと、 call poshcomplete#StartServer() できない。

Requirements

  • ローカルサーバとやりとりしたり、JSON 使いたかったので、if_python 使ってみてたけど、 webapi-vim を使うことにした。
    • なのでついでに、curlwget が必要
  • vimproc も使ってるけど、ローカルサーバを起動するときくらいにしか使ってないので、ローカルサーバさえ起動すれば、 なくても動く。

その他

  • ここで書いているのは、バージョンとしては、0.0 から、0.1 にしたときのもの

特に注があるものを除いて、このサイトの内容物は Creative Commons Licence 表示 - 非営利 - 継承 2.1 のもとでライセンスされています。

© 2015 cd01