xref: /vim-8.2.3635/runtime/syntax/cpp.vim (revision 13600303)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	C++
3ac7bd638SBram Moolenaar" Current Maintainer:	vim-jp (https://github.com/vim-jp/cpp-vim)
4ac7bd638SBram Moolenaar" Previous Maintainer:	Ken Shan <[email protected]>
5*13600303SBram Moolenaar" Last Change:	2014 May 14
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
35071d4279SBram Moolenaar
36ac7bd638SBram Moolenaar" C++ 11 extensions
37ac7bd638SBram Moolenaarif !exists("cpp_no_cpp11")
38ac7bd638SBram Moolenaar  syn keyword cppType		override final
39ac7bd638SBram Moolenaar  syn keyword cppExceptions	noexcept
40ac7bd638SBram Moolenaar  syn keyword cppStorageClass	constexpr decltype
41ac7bd638SBram Moolenaar  syn keyword cppConstant	nullptr
42*13600303SBram Moolenaar  syn region cppRawString       matchgroup=cppRawDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell
43ac7bd638SBram Moolenaarendif
44ac7bd638SBram Moolenaar
45071d4279SBram Moolenaar" The minimum and maximum operators in GNU C++
46071d4279SBram Moolenaarsyn match cppMinMax "[<>]?"
47071d4279SBram Moolenaar
48071d4279SBram Moolenaar" Default highlighting
49071d4279SBram Moolenaarif version >= 508 || !exists("did_cpp_syntax_inits")
50071d4279SBram Moolenaar  if version < 508
51071d4279SBram Moolenaar    let did_cpp_syntax_inits = 1
52071d4279SBram Moolenaar    command -nargs=+ HiLink hi link <args>
53071d4279SBram Moolenaar  else
54071d4279SBram Moolenaar    command -nargs=+ HiLink hi def link <args>
55071d4279SBram Moolenaar  endif
56071d4279SBram Moolenaar  HiLink cppAccess		cppStatement
57071d4279SBram Moolenaar  HiLink cppCast		cppStatement
58071d4279SBram Moolenaar  HiLink cppExceptions		Exception
59071d4279SBram Moolenaar  HiLink cppOperator		Operator
60071d4279SBram Moolenaar  HiLink cppStatement		Statement
61071d4279SBram Moolenaar  HiLink cppType		Type
62071d4279SBram Moolenaar  HiLink cppStorageClass	StorageClass
63071d4279SBram Moolenaar  HiLink cppStructure		Structure
64071d4279SBram Moolenaar  HiLink cppBoolean		Boolean
65ac7bd638SBram Moolenaar  HiLink cppConstant		Constant
66*13600303SBram Moolenaar  HiLink cppRawDelimiter	Delimiter
67*13600303SBram Moolenaar  HiLink cppRawString		String
68071d4279SBram Moolenaar  delcommand HiLink
69071d4279SBram Moolenaarendif
70071d4279SBram Moolenaar
71071d4279SBram Moolenaarlet b:current_syntax = "cpp"
72071d4279SBram Moolenaar
73071d4279SBram Moolenaar" vim: ts=8
74