3
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

Это было легко, не так ли? Как мне сделать то же самое с YouCompleteMe от Valloric? "Руководство пользователя" предлагает иметь отдельный файл конфигурации в каждом проекте и вручную редактировать флаги - что смешно. Как я могу изменить флаги в зависимости от типа файла в моем .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 ответ1

1

Ничто в питоне не выглядит неправильно. Единственное, что вы, вероятно, забыли, было установить

let g:ycm_extra_conf_vim_data = ['&filetype']

в вашем vimrc. Это говорит YouCompleteMe передать тип файла в функцию. В противном случае kwargs просто пуст, и вы, вероятно, провалите операторы if, не добавляя ничего.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .