最近AutoComplPopを使い始めましたが、コメントを書いているときにポップアップが煩わしいと感じています(通常、コメントを書くときに自動補完は必要ないため)。
挿入ポイントがコメント内にあるときにAutoComplPopを効果的に無効にできる構成オプションまたはクイックハックはありますか?
最近AutoComplPopを使い始めましたが、コメントを書いているときにポップアップが煩わしいと感じています(通常、コメントを書くときに自動補完は必要ないため)。
挿入ポイントがコメント内にあるときにAutoComplPopを効果的に無効にできる構成オプションまたはクイックハックはありますか?
カーソルを移動するたびに構文をチェックするときのパフォーマンスの問題に答えるには、これを自分で実装し、OnSyntaxChangeプラグインに組み込む必要がありました。
このプラグインを使用すると、この設定はわずか 3 行 (.vimrc など) で実行できます。
call OnSyntaxChange#Install('Comment', '^Comment$', 0, 'i')
autocmd User SyntaxCommentEnterI silent! AcpLock
autocmd User SyntaxCommentLeaveI silent! AcpUnlock
私にとっては、パフォーマンスへの影響は顕著ですが (ファイルの種類と構文によって異なります)、許容範囲内です。自分で試してみてください!
CursorMovedI
フックを介して現在コメントにいることを確認する必要があり、 AutoComplPop:AcpLock
を使用して一時的に無効にすることができます。:AcpUnlock
(そして、コメントから移動したら元に戻します。)
さまざまなファイルタイプのコメントを検出するには、構文の強調表示を照会するのが最適です。このようにして、既存のファイルタイプの構文定義を利用できます。
これについてのスニペットを次に示します。
function! IsOnSyntaxItem( syntaxItemPattern )
" Taking the example of comments:
" Other syntax groups (e.g. Todo) may be embedded in comments. We must thus
" check whole stack of syntax items at the cursor position for comments.
" Comments are detected via the translated, effective syntax name. (E.g. in
" Vimscript, 'vimLineComment' is linked to 'Comment'.)
for l:id in synstack(line('.'), col('.'))
let l:actualSyntaxItemName = synIDattr(l:id, 'name')
let l:effectiveSyntaxItemName = synIDattr(synIDtrans(l:id), 'name')
if l:actualSyntaxItemName =~# a:syntaxItemPattern || l:effectiveSyntaxItemName =~# a:syntaxItemPattern
return 1
endif
endfor
return 0
endfunction
これで、ソリューションをつなぎ合わせることができるはずです。