1" Vim syntax file 2" Language: C++ 3" Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp) 4" Previous Maintainer: Ken Shan <[email protected]> 5" Last Change: 2015 Mar 1 6 7" For version 5.x: Clear all syntax items 8" For version 6.x: Quit when a syntax file was already loaded 9if version < 600 10 syntax clear 11elseif exists("b:current_syntax") 12 finish 13endif 14 15" Read the C syntax to start with 16if version < 600 17 so <sfile>:p:h/c.vim 18else 19 runtime! syntax/c.vim 20 unlet b:current_syntax 21endif 22 23" C++ extensions 24syn keyword cppStatement new delete this friend using 25syn keyword cppAccess public protected private 26syn keyword cppType inline virtual explicit export bool wchar_t 27syn keyword cppExceptions throw try catch 28syn keyword cppOperator operator typeid 29syn keyword cppOperator and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq 30syn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1 31syn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$" 32syn keyword cppStorageClass mutable 33syn keyword cppStructure class typename template namespace 34syn keyword cppBoolean true false 35syn keyword cppConstant __cplusplus 36 37" C++ 11 extensions 38if !exists("cpp_no_cpp11") 39 syn keyword cppType override final 40 syn keyword cppExceptions noexcept 41 syn keyword cppStorageClass constexpr decltype thread_local 42 syn keyword cppConstant nullptr 43 syn keyword cppConstant ATOMIC_FLAG_INIT ATOMIC_VAR_INIT 44 syn keyword cppConstant ATOMIC_BOOL_LOCK_FREE ATOMIC_CHAR_LOCK_FREE 45 syn keyword cppConstant ATOMIC_CHAR16_T_LOCK_FREE ATOMIC_CHAR32_T_LOCK_FREE 46 syn keyword cppConstant ATOMIC_WCHAR_T_LOCK_FREE ATOMIC_SHORT_LOCK_FREE 47 syn keyword cppConstant ATOMIC_INT_LOCK_FREE ATOMIC_LONG_LOCK_FREE 48 syn keyword cppConstant ATOMIC_LLONG_LOCK_FREE ATOMIC_POINTER_LOCK_FREE 49 syn region cppRawString matchgroup=cppRawDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell 50endif 51 52" The minimum and maximum operators in GNU C++ 53syn match cppMinMax "[<>]?" 54 55" Default highlighting 56if version >= 508 || !exists("did_cpp_syntax_inits") 57 if version < 508 58 let did_cpp_syntax_inits = 1 59 command -nargs=+ HiLink hi link <args> 60 else 61 command -nargs=+ HiLink hi def link <args> 62 endif 63 HiLink cppAccess cppStatement 64 HiLink cppCast cppStatement 65 HiLink cppExceptions Exception 66 HiLink cppOperator Operator 67 HiLink cppStatement Statement 68 HiLink cppType Type 69 HiLink cppStorageClass StorageClass 70 HiLink cppStructure Structure 71 HiLink cppBoolean Boolean 72 HiLink cppConstant Constant 73 HiLink cppRawDelimiter Delimiter 74 HiLink cppRawString String 75 delcommand HiLink 76endif 77 78let b:current_syntax = "cpp" 79 80" vim: ts=8 81