Kan*_* Li 6 vim autocomplete clang-complete
最近我clang_complete
用来做C++代码完成.这对于小程序来说是好的和快速的,但对于我的情况来说太慢了(我正在处理大型代码库,通常一个文件需要几秒钟来编译),即使我使用了libclang,它可以缓存一些已解析的结果以加速以后的解析,如果我理解正确的话.
目前clang_complete
将阻止ClangComplete
直到libclang
完成解析.即使它启动了一个工作线程,主线程仍然会反复检查用户是否按下CTRLC或工作线程是否成功完成.在此期间,vim变得反应迟钝,从而使这个插件难以使用.
我想对这种行为做一些改进,例如,ClangComplete
不会阻塞,但如果花费的时间超过0.2秒,则返回空结果,而线程仍然在运行.当libclang完成其解析,并且它检测到我仍然在输入相同的文字完成,它会弹出一个菜单完成.
这方面的困难是:
std::strang
而不是std::string
,我键入退格键以删除错误ang
,完成菜单将再次显示.那么如何访问这个内部标志?Vimscript 是单线程的;您不必担心比赛。
Vim 会将基数(即已输入/完成的完成词的部分)传递到您的函数中。查看:help complete-functions
详细信息和示例。
一般来说,您的方法(假设您使用 Python 或 Perl 等嵌入式语言进行多线程)应该是可行的;然而,我还没有看到类似的尝试。