1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: C++ 3*d8b77f7dSBram Moolenaar" Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp) 4ac7bd638SBram Moolenaar" Previous Maintainer: Ken Shan <[email protected]> 5*d8b77f7dSBram Moolenaar" Last Change: 2015 Mar 1 6071d4279SBram Moolenaar 7071d4279SBram Moolenaar" For version 5.x: Clear all syntax items 8071d4279SBram Moolenaar" For version 6.x: Quit when a syntax file was already loaded 9071d4279SBram Moolenaarif version < 600 10071d4279SBram Moolenaar syntax clear 11071d4279SBram Moolenaarelseif exists("b:current_syntax") 12071d4279SBram Moolenaar finish 13071d4279SBram Moolenaarendif 14071d4279SBram Moolenaar 15071d4279SBram Moolenaar" Read the C syntax to start with 16071d4279SBram Moolenaarif version < 600 17071d4279SBram Moolenaar so <sfile>:p:h/c.vim 18071d4279SBram Moolenaarelse 19071d4279SBram Moolenaar runtime! syntax/c.vim 20071d4279SBram Moolenaar unlet b:current_syntax 21071d4279SBram Moolenaarendif 22071d4279SBram Moolenaar 23ac7bd638SBram Moolenaar" C++ extensions 24071d4279SBram Moolenaarsyn keyword cppStatement new delete this friend using 25071d4279SBram Moolenaarsyn keyword cppAccess public protected private 26071d4279SBram Moolenaarsyn keyword cppType inline virtual explicit export bool wchar_t 27071d4279SBram Moolenaarsyn keyword cppExceptions throw try catch 28071d4279SBram Moolenaarsyn keyword cppOperator operator typeid 29071d4279SBram Moolenaarsyn keyword cppOperator and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq 30071d4279SBram Moolenaarsyn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1 31071d4279SBram Moolenaarsyn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$" 32071d4279SBram Moolenaarsyn keyword cppStorageClass mutable 33071d4279SBram Moolenaarsyn keyword cppStructure class typename template namespace 34071d4279SBram Moolenaarsyn keyword cppBoolean true false 35*d8b77f7dSBram Moolenaarsyn keyword cppConstant __cplusplus 36071d4279SBram Moolenaar 37ac7bd638SBram Moolenaar" C++ 11 extensions 38ac7bd638SBram Moolenaarif !exists("cpp_no_cpp11") 39ac7bd638SBram Moolenaar syn keyword cppType override final 40ac7bd638SBram Moolenaar syn keyword cppExceptions noexcept 41*d8b77f7dSBram Moolenaar syn keyword cppStorageClass constexpr decltype thread_local 42ac7bd638SBram Moolenaar syn keyword cppConstant nullptr 43*d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_FLAG_INIT ATOMIC_VAR_INIT 44*d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_BOOL_LOCK_FREE ATOMIC_CHAR_LOCK_FREE 45*d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_CHAR16_T_LOCK_FREE ATOMIC_CHAR32_T_LOCK_FREE 46*d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_WCHAR_T_LOCK_FREE ATOMIC_SHORT_LOCK_FREE 47*d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_INT_LOCK_FREE ATOMIC_LONG_LOCK_FREE 48*d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_LLONG_LOCK_FREE ATOMIC_POINTER_LOCK_FREE 4913600303SBram Moolenaar syn region cppRawString matchgroup=cppRawDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell 50ac7bd638SBram Moolenaarendif 51ac7bd638SBram Moolenaar 52071d4279SBram Moolenaar" The minimum and maximum operators in GNU C++ 53071d4279SBram Moolenaarsyn match cppMinMax "[<>]?" 54071d4279SBram Moolenaar 55071d4279SBram Moolenaar" Default highlighting 56071d4279SBram Moolenaarif version >= 508 || !exists("did_cpp_syntax_inits") 57071d4279SBram Moolenaar if version < 508 58071d4279SBram Moolenaar let did_cpp_syntax_inits = 1 59071d4279SBram Moolenaar command -nargs=+ HiLink hi link <args> 60071d4279SBram Moolenaar else 61071d4279SBram Moolenaar command -nargs=+ HiLink hi def link <args> 62071d4279SBram Moolenaar endif 63071d4279SBram Moolenaar HiLink cppAccess cppStatement 64071d4279SBram Moolenaar HiLink cppCast cppStatement 65071d4279SBram Moolenaar HiLink cppExceptions Exception 66071d4279SBram Moolenaar HiLink cppOperator Operator 67071d4279SBram Moolenaar HiLink cppStatement Statement 68071d4279SBram Moolenaar HiLink cppType Type 69071d4279SBram Moolenaar HiLink cppStorageClass StorageClass 70071d4279SBram Moolenaar HiLink cppStructure Structure 71071d4279SBram Moolenaar HiLink cppBoolean Boolean 72ac7bd638SBram Moolenaar HiLink cppConstant Constant 7313600303SBram Moolenaar HiLink cppRawDelimiter Delimiter 7413600303SBram Moolenaar HiLink cppRawString String 75071d4279SBram Moolenaar delcommand HiLink 76071d4279SBram Moolenaarendif 77071d4279SBram Moolenaar 78071d4279SBram Moolenaarlet b:current_syntax = "cpp" 79071d4279SBram Moolenaar 80071d4279SBram Moolenaar" vim: ts=8 81