xref: /vim-8.2.3635/runtime/syntax/cpp.vim (revision 13600303)
1" Vim syntax file
2" Language:	C++
3" Current Maintainer:	vim-jp (https://github.com/vim-jp/cpp-vim)
4" Previous Maintainer:	Ken Shan <[email protected]>
5" Last Change:	2014 May 14
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
35
36" C++ 11 extensions
37if !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
42  syn region cppRawString       matchgroup=cppRawDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell
43endif
44
45" The minimum and maximum operators in GNU C++
46syn match cppMinMax "[<>]?"
47
48" Default highlighting
49if version >= 508 || !exists("did_cpp_syntax_inits")
50  if version < 508
51    let did_cpp_syntax_inits = 1
52    command -nargs=+ HiLink hi link <args>
53  else
54    command -nargs=+ HiLink hi def link <args>
55  endif
56  HiLink cppAccess		cppStatement
57  HiLink cppCast		cppStatement
58  HiLink cppExceptions		Exception
59  HiLink cppOperator		Operator
60  HiLink cppStatement		Statement
61  HiLink cppType		Type
62  HiLink cppStorageClass	StorageClass
63  HiLink cppStructure		Structure
64  HiLink cppBoolean		Boolean
65  HiLink cppConstant		Constant
66  HiLink cppRawDelimiter	Delimiter
67  HiLink cppRawString		String
68  delcommand HiLink
69endif
70
71let b:current_syntax = "cpp"
72
73" vim: ts=8
74