vim c++11 syntastic

¿Cómo agregar el soporte de c++ 11 al plugin vim sintáctico?



c++11 syntastic (5)

Estaba enfrentando el mismo problema e insisto en procesar c ++ 98 y c ++ 11 por separado . a continuación es mi solución:

cree un archivo llamado gcc.vim en bundle / syntastic / syntax_checkers / cpp11 / y cópielos en él:

"============================================================================ "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:

eso hará que gcc checker esté disponible (¿quieres otro corrector? puedes hacer las cosas similares que hice por ti mismo) para archivos con & filetype == ''cpp11'' en vim. ¿Cómo hacer que sus archivos se reconozcan automáticamente como el tipo de archivo cpp11 en vim? simplemente cree el archivo denominado ext_detect.vim en ~ / .vim / ftdetect / con el siguiente contenido:

au bufnewfile,bufread *.cpp11 set ft=cpp11 au bufnewfile,bufread *.cppx set ft=cpp11

de esta manera, puede procesar sus archivos * .cpp como estándar c ++ 98 y * .cpp11 o * .cppx como estándar c ++ 11 por separado, no solo la comprobación de sintaxis, sino también el resaltado de sintaxis (si necesita resaltado de sintaxis de cpp11 apoyo, este plugin vim será útil, aunque no es perfecto).

Estoy usando syntastic en mi proyecto c ++ 11. Cuando estoy editando en vim y guardando (: w), el complemento syntastic me da errores en cada lista de inicializadores {} y para cada bucle que son claramente características de c ++ 11 que faltan.

Instalé syntastic utilizando patógenos.

Aquí hay dos ejemplos del error que estoy recibiendo en las listas de inicialización y para cada bucle (ambos c ++ 11 que se compilan bien):


Resulta que el indicador de C ++ (verificador de sintaxis) de syntastic tiene muchas opciones que se pueden configurar en su .vimrc (desafortunado, me gustaría que fuera específico del proyecto, como la solución .clang_complete).

Para habilitar los estándares de c ++ 11 y usar la biblioteca libc ++ con clang (que es lo que está usando mi proyecto), agregué las siguientes líneas a mi ~ / .vimrc

let g:syntastic_cpp_compiler = ''clang++'' let g:syntastic_cpp_compiler_options = '' -std=c++11 -stdlib=libc++''

ahora funciona muy bien.


Si está utilizando YouCompleteMe además de Syntastic, necesita cambiar su archivo .ycm_extra_conf.py. Cambie de forma específica ''-Wc ++ 98-compat'' a ''-Wnoc ++ 98-compat''.

No tuve que cambiar la configuración de Syntastic, aunque podría ser porque estoy usando un archivo compile_commands.json.

a través de aquí .


Si usas YouCompleteMe, tal vez deberías cambiar ''.ycm_extra_conf.py''.only cambiar las marcas: (ruta de archivo ~ / .vim / bundle / YouCompleteMe / third_party / 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/'', ]


Tiene opciones específicas de proyecto, como la solución .clang_complete

Puede establecer la ruta a los archivos g: syntastic_cpp_config_file y g: syntastic_c_config_file. El valor predeterminado es .syntastic_cpp_config para C ++. Coloque el archivo en la raíz del proyecto y las opciones del compilador dentro de él (una para cada línea)

para details