xref: /vim-8.2.3635/runtime/syntax/cpp.vim (revision b4ada79a)
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