1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: C++ 3ac7bd638SBram Moolenaar" Current Maintainer: vim-jp (https://github.com/vim-jp/cpp-vim) 4ac7bd638SBram Moolenaar" Previous Maintainer: Ken Shan <[email protected]> 5*13600303SBram Moolenaar" Last Change: 2014 May 14 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 35071d4279SBram Moolenaar 36ac7bd638SBram Moolenaar" C++ 11 extensions 37ac7bd638SBram Moolenaarif !exists("cpp_no_cpp11") 38ac7bd638SBram Moolenaar syn keyword cppType override final 39ac7bd638SBram Moolenaar syn keyword cppExceptions noexcept 40ac7bd638SBram Moolenaar syn keyword cppStorageClass constexpr decltype 41ac7bd638SBram Moolenaar syn keyword cppConstant nullptr 42*13600303SBram Moolenaar syn region cppRawString matchgroup=cppRawDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell 43ac7bd638SBram Moolenaarendif 44ac7bd638SBram Moolenaar 45071d4279SBram Moolenaar" The minimum and maximum operators in GNU C++ 46071d4279SBram Moolenaarsyn match cppMinMax "[<>]?" 47071d4279SBram Moolenaar 48071d4279SBram Moolenaar" Default highlighting 49071d4279SBram Moolenaarif version >= 508 || !exists("did_cpp_syntax_inits") 50071d4279SBram Moolenaar if version < 508 51071d4279SBram Moolenaar let did_cpp_syntax_inits = 1 52071d4279SBram Moolenaar command -nargs=+ HiLink hi link <args> 53071d4279SBram Moolenaar else 54071d4279SBram Moolenaar command -nargs=+ HiLink hi def link <args> 55071d4279SBram Moolenaar endif 56071d4279SBram Moolenaar HiLink cppAccess cppStatement 57071d4279SBram Moolenaar HiLink cppCast cppStatement 58071d4279SBram Moolenaar HiLink cppExceptions Exception 59071d4279SBram Moolenaar HiLink cppOperator Operator 60071d4279SBram Moolenaar HiLink cppStatement Statement 61071d4279SBram Moolenaar HiLink cppType Type 62071d4279SBram Moolenaar HiLink cppStorageClass StorageClass 63071d4279SBram Moolenaar HiLink cppStructure Structure 64071d4279SBram Moolenaar HiLink cppBoolean Boolean 65ac7bd638SBram Moolenaar HiLink cppConstant Constant 66*13600303SBram Moolenaar HiLink cppRawDelimiter Delimiter 67*13600303SBram Moolenaar HiLink cppRawString String 68071d4279SBram Moolenaar delcommand HiLink 69071d4279SBram Moolenaarendif 70071d4279SBram Moolenaar 71071d4279SBram Moolenaarlet b:current_syntax = "cpp" 72071d4279SBram Moolenaar 73071d4279SBram Moolenaar" vim: ts=8 74