1" Vim syntax file
2" Language:	C++
3" Maintainer:	Ken Shan <ccshan@post.harvard.edu>
4" Last Change:	2002 Jul 15
5
6" For version 5.x: Clear all syntax items
7" For version 6.x: Quit when a syntax file was already loaded
8if version < 600
9  syntax clear
10elseif exists("b:current_syntax")
11  finish
12endif
13
14" Read the C syntax to start with
15if version < 600
16  so <sfile>:p:h/c.vim
17else
18  runtime! syntax/c.vim
19  unlet b:current_syntax
20endif
21
22" C++ extentions
23syn keyword cppStatement	new delete this friend using
24syn keyword cppAccess		public protected private
25syn keyword cppType		inline virtual explicit export bool wchar_t
26syn keyword cppExceptions	throw try catch
27syn keyword cppOperator		operator typeid
28syn keyword cppOperator		and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq
29syn match cppCast		"\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1
30syn match cppCast		"\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$"
31syn keyword cppStorageClass	mutable
32syn keyword cppStructure	class typename template namespace
33syn keyword cppNumber		NPOS
34syn keyword cppBoolean		true false
35
36" The minimum and maximum operators in GNU C++
37syn match cppMinMax "[<>]?"
38
39" Default highlighting
40if version >= 508 || !exists("did_cpp_syntax_inits")
41  if version < 508
42    let did_cpp_syntax_inits = 1
43    command -nargs=+ HiLink hi link <args>
44  else
45    command -nargs=+ HiLink hi def link <args>
46  endif
47  HiLink cppAccess		cppStatement
48  HiLink cppCast		cppStatement
49  HiLink cppExceptions		Exception
50  HiLink cppOperator		Operator
51  HiLink cppStatement		Statement
52  HiLink cppType		Type
53  HiLink cppStorageClass	StorageClass
54  HiLink cppStructure		Structure
55  HiLink cppNumber		Number
56  HiLink cppBoolean		Boolean
57  delcommand HiLink
58endif
59
60let b:current_syntax = "cpp"
61
62" vim: ts=8
63