xref: /vim-8.2.3635/runtime/syntax/cpp.vim (revision ac7bd638)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	C++
3*ac7bd638SBram Moolenaar" Current Maintainer:	vim-jp (https://github.com/vim-jp/cpp-vim)
4*ac7bd638SBram Moolenaar" Previous Maintainer:	Ken Shan <[email protected]>
5*ac7bd638SBram Moolenaar" Last Change:	2012 Jun 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
23*ac7bd638SBram 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
36*ac7bd638SBram Moolenaar" C++ 11 extensions
37*ac7bd638SBram Moolenaarif !exists("cpp_no_cpp11")
38*ac7bd638SBram Moolenaar  syn keyword cppType		override final
39*ac7bd638SBram Moolenaar  syn keyword cppExceptions	noexcept
40*ac7bd638SBram Moolenaar  syn keyword cppStorageClass	constexpr decltype
41*ac7bd638SBram Moolenaar  syn keyword cppConstant	nullptr
42*ac7bd638SBram Moolenaarendif
43*ac7bd638SBram Moolenaar
44071d4279SBram Moolenaar" The minimum and maximum operators in GNU C++
45071d4279SBram Moolenaarsyn match cppMinMax "[<>]?"
46071d4279SBram Moolenaar
47071d4279SBram Moolenaar" Default highlighting
48071d4279SBram Moolenaarif version >= 508 || !exists("did_cpp_syntax_inits")
49071d4279SBram Moolenaar  if version < 508
50071d4279SBram Moolenaar    let did_cpp_syntax_inits = 1
51071d4279SBram Moolenaar    command -nargs=+ HiLink hi link <args>
52071d4279SBram Moolenaar  else
53071d4279SBram Moolenaar    command -nargs=+ HiLink hi def link <args>
54071d4279SBram Moolenaar  endif
55071d4279SBram Moolenaar  HiLink cppAccess		cppStatement
56071d4279SBram Moolenaar  HiLink cppCast		cppStatement
57071d4279SBram Moolenaar  HiLink cppExceptions		Exception
58071d4279SBram Moolenaar  HiLink cppOperator		Operator
59071d4279SBram Moolenaar  HiLink cppStatement		Statement
60071d4279SBram Moolenaar  HiLink cppType		Type
61071d4279SBram Moolenaar  HiLink cppStorageClass	StorageClass
62071d4279SBram Moolenaar  HiLink cppStructure		Structure
63071d4279SBram Moolenaar  HiLink cppBoolean		Boolean
64*ac7bd638SBram Moolenaar  HiLink cppConstant		Constant
65071d4279SBram Moolenaar  delcommand HiLink
66071d4279SBram Moolenaarendif
67071d4279SBram Moolenaar
68071d4279SBram Moolenaarlet b:current_syntax = "cpp"
69071d4279SBram Moolenaar
70071d4279SBram Moolenaar" vim: ts=8
71