Vim YouCompleteMe clang无法补全C++11的'auto'变量

3
我使用clang完成器作为YouCompleteMe vim插件的补全工具。我发现它无法为声明为“auto”类型的变量提供预测。
这是已知的问题吗?如果不是,我应该检查哪些配置参数以寻找解决方案?
请考虑以下代码片段:
std::vector <int> persistent_data_container = {1, 2, 3};
const auto &data = persistent_data_container;
data. // on typing this dot, I would expect a list of completion suggestions 

就目前而言,该问题似乎表述不清或范围过于广泛。您能否举出一个典型情况的例子,并阐述您期望插件在该情况下执行的操作? - Walter
我已经更新了一个代码片段,用来说明我的使用情况。 - Gearoid Murphy
你能分享一下你的.vimrc.ycm_extra_conf.py文件吗? - ladislas
我的 .vimrc 文件非常大,我使用一个构建脚本来自动生成 .ycm_extra_conf.py 文件。无论如何,由于 FDinoff 确认它确实可以工作,而 ladislas 暗示问题可能出在我的 .ycm_extra_conf.py 文件上,这足以让我找到问题所在。谢谢你们。 - Gearoid Murphy
1个回答

0

最终我使用以下方法成功地分离出了问题:

:YcmForceCompileAndDiagnostics # To retry new config
:YcmDebugInfo # for debug info (derp!)
:messages # for runtime diagnostics

这指向了我的.ycm_extra_conf.py模板中的语法错误:

import os
import ycm_core
flags = ['-std=c++11',
         '-x', 'c++', # <- I had an extra comma here :(
         '-DUSE_CLANG_COMPLETER',
         '-I/usr/local/include',
         '-I/usr/include/clang/3.5/include',
         '-I/usr/include/x86_64-linux-gnu',
         '-I/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/include',
         '-I/usr/include',
         '-I/usr/include/c++/4.9', %s]

# youcompleteme is calling this function to get flags
# You can also set database for flags. Check: JSONCompilationDatabase.html in
# clang-3.2-doc package

def FlagsForFile( filename ):
  return {
    'flags': flags,
    'do_cache': True
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接