I ran into the same problem and I insist on handling C ++ 98 and C ++ 11 separately . below is my solution:
create a file called gcc.vim under bundle / syntastic / syntax_checkers / cpp11 / and copy them into it:
"============================================================================ "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:
which will make gcc-checker available (do you want another check? can you do similar things that I did for myself) for files with & filetype == 'cpp11' in vim. how to make your files automatically recongnized as cpp11 filetype in vim? just create a file called ext_detect.vim under ~ / .vim / ftdetect / with the following contents:
au bufnewfile,bufread *.cpp11 set ft=cpp11 au bufnewfile,bufread *.cppx set ft=cpp11
that way you can treat your * .cpp files as standard C ++ 98 and * .cpp11 or * .cppx as C ++ 11 standard separately, not only syntax checking, but also syntax highlighting (if you need cpp11 syntax highlighting support , this vim plugin will be useful, although not perfect).
luochen1990 Apr 03 '14 at 3:38 a.m. 2014-04-03 03:38
source share