web-dev-qa-db-ja.com

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     }  
3
Zach

pythonは間違っているようには見えません。おそらく忘れていたのは、設定することだけでした。

let g:ycm_extra_conf_vim_data = ['&filetype']

あなたのvimrcで。これは、ファイルタイプを関数に渡すようにYouCompleteMeに指示します。それ以外の場合、kwargsは空であり、おそらく何も追加せずにifステートメントに失敗します。

1
FDinoff