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*b4ada79aSBram Moolenaar" Last Change: 2016 Oct 28 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 34*b4ada79aSBram Moolenaar syn keyword cppType nullptr_t auto 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") 49*b4ada79aSBram Moolenaar syn case ignore 50*b4ada79aSBram Moolenaar syn match cppNumber display "\<0b[01]\('\=[01]\+\)*\(u\=l\{0,2}\|ll\=u\)\>" 51*b4ada79aSBram Moolenaar syn match cppNumber display "\<[1-9]\('\=\d\+\)*\(u\=l\{0,2}\|ll\=u\)\>" 52*b4ada79aSBram Moolenaar syn match cppNumber display "\<0x\x\('\=\x\+\)*\(u\=l\{0,2}\|ll\=u\)\>" 53*b4ada79aSBram Moolenaar syn case match 54b4ff518dSBram Moolenaarendif 55b4ff518dSBram Moolenaar 56071d4279SBram Moolenaar" The minimum and maximum operators in GNU C++ 57071d4279SBram Moolenaarsyn match cppMinMax "[<>]?" 58071d4279SBram Moolenaar 59071d4279SBram Moolenaar" Default highlighting 60f37506f6SBram Moolenaarhi def link cppAccess cppStatement 61f37506f6SBram Moolenaarhi def link cppCast cppStatement 62f37506f6SBram Moolenaarhi def link cppExceptions Exception 63f37506f6SBram Moolenaarhi def link cppOperator Operator 64f37506f6SBram Moolenaarhi def link cppStatement Statement 65f37506f6SBram Moolenaarhi def link cppModifier Type 66f37506f6SBram Moolenaarhi def link cppType Type 67f37506f6SBram Moolenaarhi def link cppStorageClass StorageClass 68f37506f6SBram Moolenaarhi def link cppStructure Structure 69f37506f6SBram Moolenaarhi def link cppBoolean Boolean 70f37506f6SBram Moolenaarhi def link cppConstant Constant 71f37506f6SBram Moolenaarhi def link cppRawStringDelimiter Delimiter 72f37506f6SBram Moolenaarhi def link cppRawString String 73f37506f6SBram Moolenaarhi def link cppNumber Number 74071d4279SBram Moolenaar 75071d4279SBram Moolenaarlet b:current_syntax = "cpp" 76071d4279SBram Moolenaar 77071d4279SBram Moolenaar" vim: ts=8 78