Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

オムニ補完時の col('.') の値

$
0
0

<C-x><C-o>で Vim 標準の方法でオムニ補完をした場合、!a:findstart時の col('.')は補完の開始位置、つまり a:findstart時に返した場所になる。

しかし、neocomplete.vimYouCompleteMeの場合、各自のエンジンが補完関数を呼んでいるため、col('.')の値は普通に補完時のカーソル位置になる。なので col('.')の値に依存した omnifunc を書くと neocomplete.vim や YouCompleteMe では動かなくなる。
neocomplete.vim の場合、gather_candidate の中で a:context.complete_posが補完開始位置になっているので、この値を使うようにする。
YouCompleteMe の場合、そもそも a:findstart時に返した補完開始位置を無視するので (つらい……)、本当の補完開始位置を知るためには再度 a:findstart時の処理を行う必要がある、と思う。

neco-ghcでは汎用的に書く方法を思い付けず、col('.')のこの挙動等によって Vim の補完なのか neocomplete.vim の補完なのか YouCompleteMe の補完なのかを判定して分岐させている……


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>