最近、私はclang_complete
C++ コード補完を行うために使用しています。小さなプログラムには適していて高速ですが、私の場合は遅すぎます (私は大きなコード ベースで作業しており、通常、1 つのファイルをコンパイルするのに数秒かかります)。私が正しく理解していれば。
現在、解析が完了するまでclang_complete
ブロックされます。ワーカー スレッドを開始しても、メイン スレッドは、ユーザーが押したかどうか、またはワーカー スレッドが正常に完了したかどうかを繰り返しチェックします。この期間中、vim は無反応になるため、このプラグインは使いにくくなります。ClangComplete
libclang
CTRLC
この動作を改善したいと考えています。たとえば、ClangComplete
ブロックはしませんが、スレッドがまだ実行されている間に 0.2 秒以上かかると空の結果を返します。libclang が解析を終了し、同じ補完単語を入力していることを検出すると、補完メニューがポップアップ表示されます。
これの難しさは次のとおりです。
- 異なるスレッド間で微妙な競合状態を引き起こすことなく、その時点でメニューをポップアップする方法、
- 私がまだ同じ補完単語を入力しているかどうかをどうやって知るのですか? vim 自体がこれを追跡していると思います。たとえば、 の
std::strang
代わりに何か間違ったことを入力するとstd::string
、 backspace を入力して間違った を削除するang
と、補完メニューが再び表示されるからです。では、この内部フラグにアクセスするにはどうすればよいでしょうか?