J'utilise syntastic dans mon projet c ++ 11. Lorsque je modifie dans vim et que j'enregistre (: w) le plugin syntaxique me donne des erreurs sur chaque liste d'initialisation {} et pour chaque boucle qui sont clairement des fonctionnalités c ++ 11 qui manquent.
J'ai installé syntastic en utilisant pathogène.
Voici deux exemples de l'erreur que j'obtiens sur les listes d'initialisation et pour chaque boucle (les deux c ++ 11 qui se compilent bien):
Il s'avère que le linter C++ (vérificateur de syntaxe) de syntastic a de nombreuses options qui peuvent être définies sur votre .vimrc (malheureux, je souhaite qu'il soit spécifique au projet, comme la solution .clang_complete).
Pour activer les normes c ++ 11 et utiliser la bibliothèque libc ++ avec clang (qui est ce que mon projet utilise), j'ai ajouté les lignes suivantes à mon ~/.vimrc
let g:syntastic_cpp_compiler = 'clang++'
let g:syntastic_cpp_compiler_options = ' -std=c++11 -stdlib=libc++'
cela fonctionne maintenant magnifiquement.
Il a des options spécifiques au projet, comme la solution .clang_complete
Vous pouvez définir le chemin d'accès aux fichiers g: syntastic_cpp_config_file et g: syntastic_c_config_file. La valeur par défaut est .syntastic_cpp_config pour C++. Placer le fichier à la racine du projet et les options du compilateur à l'intérieur (un pour chaque ligne)
pour détails
J'étais confronté au même problème et J'insiste pour traiter séparément c ++ 98 et c ++ 11 . ci-dessous est ma solution:
créer un fichier nommé gcc.vim sous bundle/syntastic/syntax_checkers/cpp11/ et copiez-les:
"============================================================================
"File: cpp11.vim
"Description: Syntax checking plugin for syntastic.vim
"Maintainer: Gregor Uhlenheuer <kongo2002 at gmail dot com>
"License: This program is free software. It comes without any warranty,
" to the extent permitted by applicable law. You can redistribute
" it and/or modify it under the terms of the Do What The Fuck You
" Want To Public License, Version 2, as published by Sam Hocevar.
" See http://sam.zoy.org/wtfpl/COPYING for more details.
"
"============================================================================
if exists('g:loaded_syntastic_cpp11_gcc_checker')
finish
endif
let g:loaded_syntastic_cpp11_gcc_checker = 1
if !exists('g:syntastic_cpp11_compiler')
let g:syntastic_cpp11_compiler = executable('g++') ? 'g++' : 'clang++'
endif
if !exists('g:syntastic_cpp11_compiler_options')
let g:syntastic_cpp11_compiler_options = '-std=c++11'
endif
let s:save_cpo = &cpo
set cpo&vim
function! SyntaxCheckers_cpp11_gcc_IsAvailable() dict
return executable(expand(g:syntastic_cpp11_compiler))
endfunction
function! SyntaxCheckers_cpp11_gcc_GetLocList() dict
return syntastic#c#GetLocList('cpp11', 'gcc', {
\ 'errorformat':
\ '%-G%f:%s:,' .
\ '%f:%l:%c: %trror: %m,' .
\ '%f:%l:%c: %tarning: %m,' .
\ '%f:%l:%c: %m,'.
\ '%f:%l: %trror: %m,'.
\ '%f:%l: %tarning: %m,'.
\ '%f:%l: %m',
\ 'main_flags': '-x c++ -fsyntax-only',
\ 'header_flags': '-x c++',
\ 'header_names': '\m\.\(h\|hpp\|hh\)$' })
endfunction
call g:SyntasticRegistry.CreateAndRegisterChecker({
\ 'filetype': 'cpp11',
\ 'name': 'gcc' })
let &cpo = s:save_cpo
unlet s:save_cpo
" vim: set et sts=4 sw=4:
cela rendra le vérificateur gcc disponible (vous voulez un autre vérificateur? vous pouvez faire les choses similaires que j'ai faites pour vous-même) pour les fichiers avec & filetype == 'cpp11' dans vim. comment rendre vos fichiers automatiquement reconnus en tant que type de fichier cpp11 dans vim? il suffit de créer un fichier nommé ext_detect.vim sous ~/.vim/ftdetect/ avec le contenu suivant:
au bufnewfile,bufread *.cpp11 set ft=cpp11
au bufnewfile,bufread *.cppx set ft=cpp11
de cette façon, vous pouvez traiter vos fichiers * .cpp en tant que norme c ++ 98 et * .cpp11 ou * .cppx en tant que norme c ++ 11 séparément, non seulement la vérification de la syntaxe, mais également la mise en évidence de la syntaxe (si vous avez besoin de la mise en évidence de la syntaxe cpp11 support, ce plugin vim sera utile, mais pas parfait).
Si vous utilisez YouCompleteMe en plus de Syntastic, vous devez modifier votre fichier .ycm_extra_conf.py. Remplacez de manière spécifique "-Wc ++ 98-compat" par "-Wnoc ++ 98-compat".
Je n'ai pas eu à modifier moi-même les paramètres Syntastic, bien que cela puisse être dû au fait que j'utilise un fichier compile_commands.json.
via ici .
Si vous utilisez YouCompleteMe, vous devriez peut-être changer '.ycm_extra_conf.py'.seulement changer les indicateurs: (chemin du fichier ~/.vim/bundle/YouCompleteMe/troisième_partie/ycmd/cpp/ycm/.ycm_extra_conf.py);
flags = [
'-std=c++11',
'-O0',
'-Werror',
'-Weverything',
'-Wno-documentation',
'-Wno-deprecated-declarations',
'-Wno-disabled-macro-expansion',
'-Wno-float-equal',
'-Wno-c++98-compat',
'-Wno-c++98-compat-pedantic',
'-Wno-global-constructors',
'-Wno-exit-time-destructors',
'-Wno-missing-prototypes',
'-Wno-padded',
'-Wno-old-style-cast',
'-Wno-weak-vtables',
'-x',
'c++',
'-I',
'.',
'-isystem',
'/usr/include/',
]