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]> 5063b9d15SBram Moolenaar" Last Change: 2016 Jul 07 6071d4279SBram Moolenaar 7*89bcfda6SBram Moolenaar" quit when a syntax file was already loaded 8*89bcfda6SBram Moolenaarif exists("b:current_syntax") 9071d4279SBram Moolenaar finish 10071d4279SBram Moolenaarendif 11071d4279SBram Moolenaar 12071d4279SBram Moolenaar" Read the C syntax to start with 13071d4279SBram Moolenaarruntime! syntax/c.vim 14071d4279SBram Moolenaarunlet b:current_syntax 15071d4279SBram Moolenaar 16ac7bd638SBram Moolenaar" C++ extensions 17071d4279SBram Moolenaarsyn keyword cppStatement new delete this friend using 18071d4279SBram Moolenaarsyn keyword cppAccess public protected private 19b4ff518dSBram Moolenaarsyn keyword cppModifier inline virtual explicit export 20b4ff518dSBram Moolenaarsyn keyword cppType bool wchar_t 21071d4279SBram Moolenaarsyn keyword cppExceptions throw try catch 22071d4279SBram Moolenaarsyn keyword cppOperator operator typeid 23071d4279SBram Moolenaarsyn keyword cppOperator and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq 24071d4279SBram Moolenaarsyn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1 25071d4279SBram Moolenaarsyn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$" 26071d4279SBram Moolenaarsyn keyword cppStorageClass mutable 27071d4279SBram Moolenaarsyn keyword cppStructure class typename template namespace 28071d4279SBram Moolenaarsyn keyword cppBoolean true false 29d8b77f7dSBram Moolenaarsyn keyword cppConstant __cplusplus 30071d4279SBram Moolenaar 31ac7bd638SBram Moolenaar" C++ 11 extensions 32ac7bd638SBram Moolenaarif !exists("cpp_no_cpp11") 33b4ff518dSBram Moolenaar syn keyword cppModifier override final 34b4ff518dSBram Moolenaar syn keyword cppType nullptr_t 35ac7bd638SBram Moolenaar syn keyword cppExceptions noexcept 36d8b77f7dSBram Moolenaar syn keyword cppStorageClass constexpr decltype thread_local 37ac7bd638SBram Moolenaar syn keyword cppConstant nullptr 38d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_FLAG_INIT ATOMIC_VAR_INIT 39d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_BOOL_LOCK_FREE ATOMIC_CHAR_LOCK_FREE 40d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_CHAR16_T_LOCK_FREE ATOMIC_CHAR32_T_LOCK_FREE 41d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_WCHAR_T_LOCK_FREE ATOMIC_SHORT_LOCK_FREE 42d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_INT_LOCK_FREE ATOMIC_LONG_LOCK_FREE 43d8b77f7dSBram Moolenaar syn keyword cppConstant ATOMIC_LLONG_LOCK_FREE ATOMIC_POINTER_LOCK_FREE 44f2571c61SBram Moolenaar syn region cppRawString matchgroup=cppRawStringDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell 45ac7bd638SBram Moolenaarendif 46ac7bd638SBram Moolenaar 47b4ff518dSBram Moolenaar" C++ 14 extensions 48b4ff518dSBram Moolenaarif !exists("cpp_no_cpp14") 49b4ff518dSBram Moolenaar syn match cppNumber display "\<0b[01]\+\(u\=l\{0,2}\|ll\=u\)\>" 50b4ff518dSBram Moolenaarendif 51b4ff518dSBram Moolenaar 52071d4279SBram Moolenaar" The minimum and maximum operators in GNU C++ 53071d4279SBram Moolenaarsyn match cppMinMax "[<>]?" 54071d4279SBram Moolenaar 55071d4279SBram Moolenaar" Default highlighting 56071d4279SBram Moolenaarcommand -nargs=+ HiLink hi def link <args> 57071d4279SBram MoolenaarHiLink cppAccess cppStatement 58071d4279SBram MoolenaarHiLink cppCast cppStatement 59071d4279SBram MoolenaarHiLink cppExceptions Exception 60071d4279SBram MoolenaarHiLink cppOperator Operator 61071d4279SBram MoolenaarHiLink cppStatement Statement 62b4ff518dSBram MoolenaarHiLink cppModifier Type 63071d4279SBram MoolenaarHiLink cppType Type 64071d4279SBram MoolenaarHiLink cppStorageClass StorageClass 65071d4279SBram MoolenaarHiLink cppStructure Structure 66071d4279SBram MoolenaarHiLink cppBoolean Boolean 67ac7bd638SBram MoolenaarHiLink cppConstant Constant 68f2571c61SBram MoolenaarHiLink cppRawStringDelimiter Delimiter 6913600303SBram MoolenaarHiLink cppRawString String 70063b9d15SBram MoolenaarHiLink cppNumber Number 71071d4279SBram Moolenaardelcommand HiLink 72071d4279SBram Moolenaar 73071d4279SBram Moolenaarlet b:current_syntax = "cpp" 74071d4279SBram Moolenaar 75071d4279SBram Moolenaar" vim: ts=8 76