blob: 8b63e48b0478de137a68acb532399e5047596314 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: C#
Bram Moolenaar9c102382006-05-03 21:26:49 +00003" Maintainer: Anduin Withers <awithers@anduin.com>
4" Former Maintainer: Johannes Zellner <johannes@zellner.org>
5" Last Change: Sun Apr 30 19:26:18 PDT 2006
Bram Moolenaar071d4272004-06-13 20:20:40 +00006" Filenames: *.cs
7" $Id$
8"
9" REFERENCES:
10" [1] ECMA TC39: C# Language Specification (WD13Oct01.doc)
11
12if exists("b:current_syntax")
13 finish
14endif
15
16let s:cs_cpo_save = &cpo
17set cpo&vim
18
19
20" type
21syn keyword csType bool byte char decimal double float int long object sbyte short string uint ulong ushort void
22" storage
23syn keyword csStorage class delegate enum interface namespace struct
Bram Moolenaar551dbcc2006-04-25 22:13:59 +000024" repeat / condition / label
Bram Moolenaar071d4272004-06-13 20:20:40 +000025syn keyword csRepeat break continue do for foreach goto return while
26syn keyword csConditional else if switch
27syn keyword csLabel case default
28" there's no :: operator in C#
29syn match csOperatorError display +::+
30" user labels (see [1] 8.6 Statements)
31syn match csLabel display +^\s*\I\i*\s*:\([^:]\)\@=+
32" modifier
33syn keyword csModifier abstract const extern internal override private protected public readonly sealed static virtual volatile
34" constant
35syn keyword csConstant false null true
36" exception
37syn keyword csException try catch finally throw
38
39" TODO:
40syn keyword csUnspecifiedStatement as base checked event fixed in is lock new operator out params ref sizeof stackalloc this typeof unchecked unsafe using
41" TODO:
Bram Moolenaar9c102382006-05-03 21:26:49 +000042syn keyword csUnsupportedStatement add remove value
Bram Moolenaar071d4272004-06-13 20:20:40 +000043" TODO:
44syn keyword csUnspecifiedKeyword explicit implicit
45
46
Bram Moolenaar9c102382006-05-03 21:26:49 +000047" Contextual Keywords
48syn match csContextualStatement /\<yield[[:space:]\n]\+\(return\|break\)/me=s+5
49syn match csContextualStatement /\<partial[[:space:]\n]\+\(class\|struct\|interface\)/me=s+7
50syn match csContextualStatement /\<\(get\|set\)[[:space:]\n]*{/me=s+3
51syn match csContextualStatement /\<where\>[^:]\+:/me=s+5
Bram Moolenaar071d4272004-06-13 20:20:40 +000052
53" Comments
54"
55" PROVIDES: @csCommentHook
56"
57" TODO: include strings ?
58"
59syn keyword csTodo contained TODO FIXME XXX NOTE
Bram Moolenaar551dbcc2006-04-25 22:13:59 +000060syn region csComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spell
61syn match csComment "//.*$" contains=@csCommentHook,csTodo,@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +000062
63" xml markup inside '///' comments
64syn cluster xmlRegionHook add=csXmlCommentLeader
65syn cluster xmlCdataHook add=csXmlCommentLeader
66syn cluster xmlStartTagHook add=csXmlCommentLeader
67syn keyword csXmlTag contained Libraries Packages Types Excluded ExcludedTypeName ExcludedLibraryName
68syn keyword csXmlTag contained ExcludedBucketName TypeExcluded Type TypeKind TypeSignature AssemblyInfo
69syn keyword csXmlTag contained AssemblyName AssemblyPublicKey AssemblyVersion AssemblyCulture Base
70syn keyword csXmlTag contained BaseTypeName Interfaces Interface InterfaceName Attributes Attribute
71syn keyword csXmlTag contained AttributeName Members Member MemberSignature MemberType MemberValue
72syn keyword csXmlTag contained ReturnValue ReturnType Parameters Parameter MemberOfPackage
73syn keyword csXmlTag contained ThreadingSafetyStatement Docs devdoc example overload remarks returns summary
74syn keyword csXmlTag contained threadsafe value internalonly nodoc exception param permission platnote
75syn keyword csXmlTag contained seealso b c i pre sub sup block code note paramref see subscript superscript
76syn keyword csXmlTag contained list listheader item term description altcompliant altmember
77
78syn cluster xmlTagHook add=csXmlTag
79
80syn match csXmlCommentLeader +\/\/\/+ contained
81syn match csXmlComment +\/\/\/.*$+ contains=csXmlCommentLeader,@csXml
82syntax include @csXml <sfile>:p:h/xml.vim
83hi def link xmlRegion Comment
84
85
86" [1] 9.5 Pre-processing directives
87syn region csPreCondit
Bram Moolenaar9c102382006-05-03 21:26:49 +000088 \ start="^\s*#\s*\(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +000089 \ skip="\\$" end="$" contains=csComment keepend
Bram Moolenaar9c102382006-05-03 21:26:49 +000090syn region csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$"
91 \ end="^\s*#\s*endregion" transparent fold contains=TOP
Bram Moolenaar071d4272004-06-13 20:20:40 +000092
93
94
95" Strings and constants
96syn match csSpecialError contained "\\."
97syn match csSpecialCharError contained "[^']"
98" [1] 9.4.4.4 Character literals
99syn match csSpecialChar contained +\\["\\'0abfnrtvx]+
100" unicode characters
101syn match csUnicodeNumber +\\\(u\x\{4}\|U\x\{8}\)+ contained contains=csUnicodeSpecifier
102syn match csUnicodeSpecifier +\\[uU]+ contained
Bram Moolenaar551dbcc2006-04-25 22:13:59 +0000103syn region csVerbatimString start=+@"+ end=+"+ end=+$+ skip=+""+ contains=csVerbatimSpec,@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +0000104syn match csVerbatimSpec +@"+he=s+1 contained
Bram Moolenaar551dbcc2006-04-25 22:13:59 +0000105syn region csString start=+"+ end=+"+ end=+$+ contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +0000106syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError
107syn match csCharacter "'\\''" contains=csSpecialChar
108syn match csCharacter "'[^\\]'"
109syn match csNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
110syn match csNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
111syn match csNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
112syn match csNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
113
114" The default highlighting.
115hi def link csType Type
116hi def link csStorage StorageClass
117hi def link csRepeat Repeat
118hi def link csConditional Conditional
119hi def link csLabel Label
120hi def link csModifier StorageClass
121hi def link csConstant Constant
122hi def link csException Exception
123hi def link csUnspecifiedStatement Statement
124hi def link csUnsupportedStatement Statement
125hi def link csUnspecifiedKeyword Keyword
Bram Moolenaar9c102382006-05-03 21:26:49 +0000126hi def link csContextualStatement Statement
Bram Moolenaar071d4272004-06-13 20:20:40 +0000127hi def link csOperatorError Error
128
129hi def link csTodo Todo
130hi def link csComment Comment
131
132hi def link csSpecialError Error
133hi def link csSpecialCharError Error
134hi def link csString String
135hi def link csVerbatimString String
136hi def link csVerbatimSpec SpecialChar
137hi def link csPreCondit PreCondit
138hi def link csCharacter Character
139hi def link csSpecialChar SpecialChar
140hi def link csNumber Number
141hi def link csUnicodeNumber SpecialChar
142hi def link csUnicodeSpecifier SpecialChar
143
144" xml markup
145hi def link csXmlCommentLeader Comment
146hi def link csXmlComment Comment
147hi def link csXmlTag Statement
148
149let b:current_syntax = "cs"
150
151let &cpo = s:cs_cpo_save
152unlet s:cs_cpo_save
153
154" vim: ts=8