考虑以下简单代码:
$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来自官方网站。 这样的错误是正常的吗?
答案 0 :(得分:0)
该插件完全依赖libclang来完成完成,而该完成仅反过来会完成或多或少有效的代码(我认为它可以在解析器能够从其恢复的游标之前原谅一些错误,并且可以在游标可以包含更严重的错误。
全局范围内的语句不在C ++的有效语法构造中。这很可能会使clang的解析混乱,以至于它返回一些与立即上下文无关的通用完成列表。
我认为这种行为对于使用clang的任何完成系统都是预期的,除非以某种方式明确地解决了该问题。