vim clang_完成奇怪的完成错误

vim clang_完成奇怪的完成错误,vim,clang-complete,Vim,Clang Complete,考虑以下简单代码: #include <vector> #include <string> using namespace std; vector<string> vec1; //vec1. //completion does not work AND break the completion that used to work if left without semicolon. int main(){ vector<string>

考虑以下简单代码:

#include <vector>
#include <string>

using namespace std;
vector<string> vec1;
//vec1.  //completion does not work AND break the completion that used to work if left without semicolon.

int main(){

    vector<string> vec2;
    vec2.push_back("sometext"); //completion works
    vec1.push_back("sometext"); //works here too

    return 0;
}
#包括
#包括
使用名称空间std;
向量vec1;
//vec1//完成不起作用,如果没有分号,则会破坏以前起作用的完成。
int main(){
向量vec2;
vec2.向后推(“sometext”);//完成工作
vec1.push_back(“sometext”);//在这里也起作用
返回0;
}
当我键入“vec2.”或“vec1.”时,我会在键入点之后看到一个字符串类型的所有方法的下拉列表。所以它在这里起作用

下面是它变得奇怪的原因:

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

2) 现在,如果我没有完成这一行,并且忘记在main()中添加分号,那么我就不能像以前那样在main()中进行正确的自动完成

我唯一运行的插件是clang_complete和supertab。我尝试过不使用supertab,使用各种_vimrc和.clang_complete设置,但没有任何好处。我使用的是win7,llvm/libclang来自官方网站。
这样的错误是正常的吗?

插件完全依赖libclang来完成,而libclang只完成或多或少有效的代码(我认为它可以原谅解析器能够恢复的游标之前的一些错误,游标之后的代码可能包含更严重的错误)

全局范围的语句不在C++的有效语法结构中。这可能混淆了CLAN的解析,使其返回一些与当前上下文无关的通用完成列表。


我认为,任何使用clang的完成系统都会出现这种行为,除非它以某种方式被明确处理。

询问插件的问题跟踪程序如何?