let g:syntastic_c_compiler = 'clang'
let g:syntastic_c_compiler_options = ' -ansi -pedantic'
let g:syntastic_cpp_compiler = 'clang++'
let g:syntastic_cpp_compiler_options = ' -std=c++11 -stdlib=libc++ -pedantic
这很简单,不是吗?我该如何使用 Valloric 的 YouCompleteMe 做同样的事情?“用户指南”建议在每个项目中使用单独的配置文件,并手动编辑标志 - 这太荒谬了。我如何根据我的文件类型更改标志.ycm_extra_conf.py
?我的尝试:
1
2 def FlagsForFile(filename, **kwargs):
3 flags = [
4 '-Wall',
5 '-Wextra',
6 '-Werror',
7 '-pedantic'
8 ]
9 data = kwargs['client_data']
10 filetype = data['&filetype']
11 if filetype == 'c':
12 flags += ['-ansi']
13 elif filetype == 'cpp':
14 flags += ['-std=c++11']
15 flags += ['stdlib=libc++']
16 return {
17 'flags': flags,
18 'do_cache': True
19 }
答案1
Python 中一切正常。你可能忘记的唯一一件事就是设置
let g:ycm_extra_conf_vim_data = ['&filetype']
在您的 vimrc 中。这会告诉 YouCompleteMe 将文件类型传递给函数。否则 kwargs 只是空的,您可能会跳过 if 语句而不添加任何内容。