YouCompleteMe 设置文件类型标志

YouCompleteMe 设置文件类型标志
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 语句而不添加任何内容。

相关内容