vim clang_complete奇怪的完成错误

时间:2018-06-28 22:56:53

标签: vim clang-complete

考虑以下简单代码:

$referred_by =  $request->query('ref');

当我键入“ vec2”时。或“ vec1”。在输入点之后,将立即显示一个字符串类型的所有方法的下拉列表。因此它在这里有效。

这是怎么变得奇怪:

1)当我执行“ vec1”时。在main之前的全局范围内,在下拉菜单中为我提供了错误的选项(名称空间,using,asm,typedef,using,static_assert,extern等)。而且它根本找不到'push_back'(“未找到用户定义的完成(^ U ^ P ^ N)模式)

2)现在,如果我未完成此行而忘记放入分号,那么我将无法像以前一样在main()中进行适当的自动补全!

我运行的只有插件clang_complete和supertab。我尝试了没有超级表并且使用各种_vimrc和.clang_complete设置没有任何好处。我在win7上,llvm / libclang来自官方网站。 这样的错误是正常的吗?

1 个答案:

答案 0 :(得分:0)

该插件完全依赖libclang来完成完成,而该完成仅反过来会完成或多或少有效的代码(我认为它可以在解析器能够从其恢复的游标之前原谅一些错误,并且可以在游标可以包含更严重的错误。

全局范围内的语句不在C ++的有效语法构造中。这很可能会使clang的解析混乱,以至于它返回一些与立即上下文无关的通用完成列表。

我认为这种行为对于使用clang的任何完成系统都是预期的,除非以某种方式明确地解决了该问题。