たけっぱ横丁

the technical document for Vim(Editor), Natural Language Proecssing(NLP) tools and Programming(Python, Ruby, C++ etc).

Completed snippet featureを使ってみる

Shoug/neosnippet.vim に Completed snippet featureなる実験的機能が追加された. Implemented completed snippet feature

早速使ってみようと思い, 色々見てみるが 使い方が docみてもhelp見てもわかんねーなーと思って

Lingrを検索したらあった.
http://lingr.com/room/vim/archives/2015/08/23#message-22336910

Shougo
使い方は簡単。
補完候補を確定したら、それをトリガーに候補を展開するだけ。
汎用的な仕組みなので、neocompleteだけでなく、deoplete や他のオムニ補完にも対応。
戻り値の補完はしません。ただの引数補完用途なので。
miosnippet の実装を分析しました。
neocomplete が持っている前回の補完情報を利用して、
スニペット複数動的に生成するようですね。
ただ、スニペットの生成が手動なのがつらいところか。
補完関数によって細かくカスタマイズできるのは筋が良さそう。

これでもいまいち要領を得なかったので 仕方なしにソースコードを読む.

  1. v:completed_item が必要. CompletedDoneイベントの発生時に補完した要素がどのような属性であったかを 記述するVimの定義済み変数の模様.

動作としては以下のような感じ. 入力して展開すると test_func| -> test_func(arg1, arg2) しかも arg1とarg2がそれぞれplace-holderになるという動作.

このsnippetを自動的に作成してくれるのが このcompleted snippet feature. snippetの生成のタイミングは補完関数で変換候補の関数のが入力された時 そのタイミングで自動的にoneshotのsnippetが作成されるようだ.

便利ではあるので うまく使えるように各種設定したいところ