Недавно я использовал clang_complete
для завершения кода C++. Это хорошо и быстро для небольших программ, но слишком медленно для моего случая (я работаю с большой базой кода и обычно один файл занимает несколько секунд для компиляции), даже если я использовал libclang, который может кэшировать некоторые результаты разбора для ускорения последующего разбора, если я правильно понимаю.
В настоящее время clang_complete
блокирует ClangComplete
, пока libclang
не закончит разбор. Даже несмотря на запуск рабочего потока, основной поток все еще неоднократно проверяет, нажал ли пользователь CTRLC или рабочий поток успешно завершился. В этот период vim становится невосприимчивым, что затрудняет использование этого плагина.
Я хочу немного улучшить это поведение, например, ClangComplete
не будет блокироваться, а будет возвращать пустые результаты, если это займет больше 0.2 секунды, в то время как поток все еще запущен. Когда libclang закончит разбор и обнаружит, что я все еще набираю одно и то же слово завершения, он выведет меню завершения.
Трудности для этого:
std::strang
вместо std::string
, затем набираю backspace, чтобы удалить неправильный ang
, меню завершения появится снова. Как мне получить доступ к этому внутреннему флагу?