1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: C++ 3d8b77f7dSBram Moolenaar" Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp) 4ac7bd638SBram Moolenaar" Previous Maintainer: Ken Shan <[email protected]> 5*b4ff518dSBram Moolenaar" Last Change: 2015 Nov 10 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 26*b4ff518dSBram Moolenaarsyn keyword cppModifier inline virtual explicit export 27*b4ff518dSBram Moolenaarsyn keyword cppType bool wchar_t 28071d4279SBram Moolenaarsyn keyword cppExceptions throw try catch 29071d4279SBram Moolenaarsyn keyword cppOperator operator typeid 30071d4279SBram Moolenaarsyn keyword cppOperator and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq 31071d4279SBram Moolenaarsyn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1 32071d4279SBram Moolenaarsyn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$" 33071d4279SBram Moolenaarsyn keyword cppStorageClass mutable 34071d4279SBram Moolenaarsyn keyword cppStructure class typename template namespace 35071d4279SBram Moolenaarsyn keyword cppBoolean true false 36d8b77f7dSBram Moolenaarsyn keyword cppConstant __cplusplus 37071d4279SBram Moolenaar 38ac7bd638SBram Moolenaar" C++ 11 extensions 39ac7bd638SBram Moolenaarif !exists("cpp_no_cpp11") 40*b4ff518dSBram Moolenaar syn keyword cppModifier override final 41*b4ff518dSBram Moolenaar syn keyword cppType nullptr_t 42ac7bd638SBram Moolenaar syn keyword cppExceptions noexcept 43d8b77f7dSBram Moolenaar syn keyword cppStorageClass constexpr decltype thread_local 44ac7bd638SBram Moolenaar syn keyword cppConstant nullptr 45d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_FLAG_INIT ATOMIC_VAR_INIT 46d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_BOOL_LOCK_FREE ATOMIC_CHAR_LOCK_FREE 47d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_CHAR16_T_LOCK_FREE ATOMIC_CHAR32_T_LOCK_FREE 48d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_WCHAR_T_LOCK_FREE ATOMIC_SHORT_LOCK_FREE 49d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_INT_LOCK_FREE ATOMIC_LONG_LOCK_FREE 50d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_LLONG_LOCK_FREE ATOMIC_POINTER_LOCK_FREE 51f2571c61SBram Moolenaar syn region cppRawString matchgroup=cppRawStringDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell 52ac7bd638SBram Moolenaarendif 53ac7bd638SBram Moolenaar 54*b4ff518dSBram Moolenaar" C++ 14 extensions 55*b4ff518dSBram Moolenaarif !exists("cpp_no_cpp14") 56*b4ff518dSBram Moolenaar syn match cppNumber display "\<0b[01]\+\(u\=l\{0,2}\|ll\=u\)\>" 57*b4ff518dSBram Moolenaarendif 58*b4ff518dSBram Moolenaar 59071d4279SBram Moolenaar" The minimum and maximum operators in GNU C++ 60071d4279SBram Moolenaarsyn match cppMinMax "[<>]?" 61071d4279SBram Moolenaar 62071d4279SBram Moolenaar" Default highlighting 63071d4279SBram Moolenaarif version >= 508 || !exists("did_cpp_syntax_inits") 64071d4279SBram Moolenaar if version < 508 65071d4279SBram Moolenaar let did_cpp_syntax_inits = 1 66071d4279SBram Moolenaar command -nargs=+ HiLink hi link <args> 67071d4279SBram Moolenaar else 68071d4279SBram Moolenaar command -nargs=+ HiLink hi def link <args> 69071d4279SBram Moolenaar endif 70071d4279SBram Moolenaar HiLink cppAccess cppStatement 71071d4279SBram Moolenaar HiLink cppCast cppStatement 72071d4279SBram Moolenaar HiLink cppExceptions Exception 73071d4279SBram Moolenaar HiLink cppOperator Operator 74071d4279SBram Moolenaar HiLink cppStatement Statement 75*b4ff518dSBram Moolenaar HiLink cppModifier Type 76071d4279SBram Moolenaar HiLink cppType Type 77071d4279SBram Moolenaar HiLink cppStorageClass StorageClass 78071d4279SBram Moolenaar HiLink cppStructure Structure 79071d4279SBram Moolenaar HiLink cppBoolean Boolean 80ac7bd638SBram Moolenaar HiLink cppConstant Constant 81f2571c61SBram Moolenaar HiLink cppRawStringDelimiter Delimiter 8213600303SBram Moolenaar HiLink cppRawString String 83071d4279SBram Moolenaar delcommand HiLink 84071d4279SBram Moolenaarendif 85071d4279SBram Moolenaar 86071d4279SBram Moolenaarlet b:current_syntax = "cpp" 87071d4279SBram Moolenaar 88071d4279SBram Moolenaar" vim: ts=8 89