3 " Current Maintainer: vim-jp (https://github.com/vim-jp/cpp-vim)
4 " Previous Maintainer: Ken Shan <ccshan@post.harvard.edu>
5 " Last Change: 2012 Jun 14
7 " For version 5.x: Clear all syntax items
8 " For version 6.x: Quit when a syntax file was already loaded
11 elseif exists("b:current_syntax")
15 " Read the C syntax to start with
20 unlet b:current_syntax
24 syn keyword cppStatement new delete this friend using
25 syn keyword cppAccess public protected private
26 syn keyword cppType inline virtual explicit export bool wchar_t
27 syn keyword cppExceptions throw try catch
28 syn keyword cppOperator operator typeid
29 syn keyword cppOperator and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq
30 syn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1
31 syn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$"
32 syn keyword cppStorageClass mutable
33 syn keyword cppStructure class typename template namespace
34 syn keyword cppBoolean true false
37 if !exists("cpp_no_cpp11")
38 syn keyword cppType override final
39 syn keyword cppExceptions noexcept
40 syn keyword cppStorageClass constexpr decltype
41 syn keyword cppConstant nullptr
44 " The minimum and maximum operators in GNU C++
45 syn match cppMinMax "[<>]?"
47 " Default highlighting
48 if version >= 508 || !exists("did_cpp_syntax_inits")
50 let did_cpp_syntax_inits = 1
51 command -nargs=+ HiLink hi link <args>
53 command -nargs=+ HiLink hi def link <args>
55 HiLink cppAccess cppStatement
56 HiLink cppCast cppStatement
57 HiLink cppExceptions Exception
58 HiLink cppOperator Operator
59 HiLink cppStatement Statement
61 HiLink cppStorageClass StorageClass
62 HiLink cppStructure Structure
63 HiLink cppBoolean Boolean
64 HiLink cppConstant Constant
68 let b:current_syntax = "cpp"