xref: /vim-8.2.3635/runtime/syntax/cpp.vim (revision d8b77f7d)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	C++
3*d8b77f7dSBram Moolenaar" Current Maintainer:	vim-jp (https://github.com/vim-jp/vim-cpp)
4ac7bd638SBram Moolenaar" Previous Maintainer:	Ken Shan <[email protected]>
5*d8b77f7dSBram Moolenaar" Last Change:	2015 Mar 1
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
35*d8b77f7dSBram Moolenaarsyn keyword cppConstant		__cplusplus
36071d4279SBram Moolenaar
37ac7bd638SBram Moolenaar" C++ 11 extensions
38ac7bd638SBram Moolenaarif !exists("cpp_no_cpp11")
39ac7bd638SBram Moolenaar  syn keyword cppType		override final
40ac7bd638SBram Moolenaar  syn keyword cppExceptions	noexcept
41*d8b77f7dSBram Moolenaar  syn keyword cppStorageClass	constexpr decltype thread_local
42ac7bd638SBram Moolenaar  syn keyword cppConstant	nullptr
43*d8b77f7dSBram Moolenaar  syn keyword cppConstant	ATOMIC_FLAG_INIT ATOMIC_VAR_INIT
44*d8b77f7dSBram Moolenaar  syn keyword cppConstant	ATOMIC_BOOL_LOCK_FREE ATOMIC_CHAR_LOCK_FREE
45*d8b77f7dSBram Moolenaar  syn keyword cppConstant	ATOMIC_CHAR16_T_LOCK_FREE ATOMIC_CHAR32_T_LOCK_FREE
46*d8b77f7dSBram Moolenaar  syn keyword cppConstant	ATOMIC_WCHAR_T_LOCK_FREE ATOMIC_SHORT_LOCK_FREE
47*d8b77f7dSBram Moolenaar  syn keyword cppConstant	ATOMIC_INT_LOCK_FREE ATOMIC_LONG_LOCK_FREE
48*d8b77f7dSBram Moolenaar  syn keyword cppConstant	ATOMIC_LLONG_LOCK_FREE ATOMIC_POINTER_LOCK_FREE
4913600303SBram Moolenaar  syn region cppRawString	matchgroup=cppRawDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell
50ac7bd638SBram Moolenaarendif
51ac7bd638SBram Moolenaar
52071d4279SBram Moolenaar" The minimum and maximum operators in GNU C++
53071d4279SBram Moolenaarsyn match cppMinMax "[<>]?"
54071d4279SBram Moolenaar
55071d4279SBram Moolenaar" Default highlighting
56071d4279SBram Moolenaarif version >= 508 || !exists("did_cpp_syntax_inits")
57071d4279SBram Moolenaar  if version < 508
58071d4279SBram Moolenaar    let did_cpp_syntax_inits = 1
59071d4279SBram Moolenaar    command -nargs=+ HiLink hi link <args>
60071d4279SBram Moolenaar  else
61071d4279SBram Moolenaar    command -nargs=+ HiLink hi def link <args>
62071d4279SBram Moolenaar  endif
63071d4279SBram Moolenaar  HiLink cppAccess		cppStatement
64071d4279SBram Moolenaar  HiLink cppCast		cppStatement
65071d4279SBram Moolenaar  HiLink cppExceptions		Exception
66071d4279SBram Moolenaar  HiLink cppOperator		Operator
67071d4279SBram Moolenaar  HiLink cppStatement		Statement
68071d4279SBram Moolenaar  HiLink cppType		Type
69071d4279SBram Moolenaar  HiLink cppStorageClass	StorageClass
70071d4279SBram Moolenaar  HiLink cppStructure		Structure
71071d4279SBram Moolenaar  HiLink cppBoolean		Boolean
72ac7bd638SBram Moolenaar  HiLink cppConstant		Constant
7313600303SBram Moolenaar  HiLink cppRawDelimiter	Delimiter
7413600303SBram Moolenaar  HiLink cppRawString		String
75071d4279SBram Moolenaar  delcommand HiLink
76071d4279SBram Moolenaarendif
77071d4279SBram Moolenaar
78071d4279SBram Moolenaarlet b:current_syntax = "cpp"
79071d4279SBram Moolenaar
80071d4279SBram Moolenaar" vim: ts=8
81