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 789bcfda6SBram Moolenaar" quit when a syntax file was already loaded 889bcfda6SBram 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 56*f37506f6SBram Moolenaarhi def link cppAccess cppStatement 57*f37506f6SBram Moolenaarhi def link cppCast cppStatement 58*f37506f6SBram Moolenaarhi def link cppExceptions Exception 59*f37506f6SBram Moolenaarhi def link cppOperator Operator 60*f37506f6SBram Moolenaarhi def link cppStatement Statement 61*f37506f6SBram Moolenaarhi def link cppModifier Type 62*f37506f6SBram Moolenaarhi def link cppType Type 63*f37506f6SBram Moolenaarhi def link cppStorageClass StorageClass 64*f37506f6SBram Moolenaarhi def link cppStructure Structure 65*f37506f6SBram Moolenaarhi def link cppBoolean Boolean 66*f37506f6SBram Moolenaarhi def link cppConstant Constant 67*f37506f6SBram Moolenaarhi def link cppRawStringDelimiter Delimiter 68*f37506f6SBram Moolenaarhi def link cppRawString String 69*f37506f6SBram Moolenaarhi def link cppNumber Number 70071d4279SBram Moolenaar 71071d4279SBram Moolenaarlet b:current_syntax = "cpp" 72071d4279SBram Moolenaar 73071d4279SBram Moolenaar" vim: ts=8 74