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 }
pythonは間違っているようには見えません。おそらく忘れていたのは、設定することだけでした。
let g:ycm_extra_conf_vim_data = ['&filetype']
あなたのvimrcで。これは、ファイルタイプを関数に渡すようにYouCompleteMeに指示します。それ以外の場合、kwargsは空であり、おそらく何も追加せずにifステートメントに失敗します。