YouCompleteMe definir sinalizadores para tipo de arquivo

2
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

Isso foi fácil, não foi? Como eu faço a mesma coisa com o YouCompleteMe de Valloric? O "Guia do Usuário" sugere ter um arquivo de configuração separado em cada projeto e editar manualmente os sinalizadores - o que é ridículo. Como posso alterar os sinalizadores com base no tipo de arquivo em .ycm_extra_conf.py ? Minha tentativa:

  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     }  
    
por Zach 23.11.2014 / 07:56

1 resposta

0

Nada no python parece errado. A única coisa que você provavelmente esqueceu foi definir

let g:ycm_extra_conf_vim_data = ['&filetype']

no seu vimrc. Isso diz ao YouCompleteMe para passar o tipo de arquivo para a função. Caso contrário, o kwargs está vazio e você provavelmente vai cair nas instruções if sem adicionar nada.

    
por 24.11.2014 / 19:41

Tags