7
|
1 " Vim syntax file
|
14372
|
2 " Language: C#
|
|
3 " Maintainer: Nick Jensen <nickspoon@gmail.com>
|
|
4 " Former Maintainers: Anduin Withers <awithers@anduin.com>
|
|
5 " Johannes Zellner <johannes@zellner.org>
|
15131
|
6 " Last Change: 2018-11-26
|
14372
|
7 " Filenames: *.cs
|
|
8 " License: Vim (see :h license)
|
|
9 " Repository: https://github.com/nickspoons/vim-cs
|
7
|
10 "
|
|
11 " REFERENCES:
|
|
12 " [1] ECMA TC39: C# Language Specification (WD13Oct01.doc)
|
|
13
|
15131
|
14 if exists('b:current_syntax')
|
|
15 finish
|
7
|
16 endif
|
|
17
|
15131
|
18 let s:save_cpo = &cpoptions
|
|
19 set cpoptions&vim
|
7
|
20
|
|
21
|
14372
|
22 syn keyword csType bool byte char decimal double float int long object sbyte short string T uint ulong ushort var void dynamic
|
|
23 syn keyword csStorage delegate enum interface namespace struct
|
|
24 syn keyword csRepeat break continue do for foreach goto return while
|
|
25 syn keyword csConditional else if switch
|
|
26 syn keyword csLabel case default
|
|
27 syn match csOperatorError display +::+
|
|
28 syn match csGlobal display +global::+
|
7
|
29 " user labels (see [1] 8.6 Statements)
|
14372
|
30 syn match csLabel display +^\s*\I\i*\s*:\([^:]\)\@=+
|
|
31 syn keyword csModifier abstract const extern internal override private protected public readonly sealed static virtual volatile
|
|
32 syn keyword csConstant false null true
|
|
33 syn keyword csException try catch finally throw when
|
|
34 syn keyword csLinq ascending by descending equals from group in into join let on orderby select where
|
|
35 syn keyword csAsync async await
|
7
|
36
|
15131
|
37 syn keyword csUnspecifiedStatement as base checked event fixed in is lock nameof operator out params ref sizeof stackalloc this unchecked unsafe using
|
14372
|
38 syn keyword csUnsupportedStatement add remove value
|
|
39 syn keyword csUnspecifiedKeyword explicit implicit
|
7
|
40
|
859
|
41 " Contextual Keywords
|
14372
|
42 syn match csContextualStatement /\<yield[[:space:]\n]\+\(return\|break\)/me=s+5
|
|
43 syn match csContextualStatement /\<partial[[:space:]\n]\+\(class\|struct\|interface\)/me=s+7
|
|
44 syn match csContextualStatement /\<\(get\|set\)\(;\|[[:space:]\n]*{\)/me=s+3
|
|
45 syn match csContextualStatement /\<where\>[^:]\+:/me=s+5
|
|
46
|
15131
|
47 " Operators
|
|
48 syn keyword csTypeOf typeof contained
|
|
49 syn region csTypeOfStatement start="typeof(" end=")" contains=csType, csTypeOf
|
|
50
|
14372
|
51 " Punctuation
|
|
52 syn match csBraces "[{}\[\]]" display
|
|
53 syn match csParens "[()]" display
|
15131
|
54 syn match csOpSymbols "[+\-=]\{1,2}" display
|
|
55 syn match csOpSymbols "[><]\{2}" display
|
|
56 syn match csOpSymbols "\s\zs[><]\ze\_s" display
|
14372
|
57 syn match csOpSymbols "[!><+\-*/]=" display
|
|
58 syn match csOpSymbols "[!*/^]" display
|
|
59 syn match csOpSymbols "=>" display
|
|
60 syn match csEndColon ";" display
|
|
61 syn match csLogicSymbols "&&" display
|
|
62 syn match csLogicSymbols "||" display
|
|
63 syn match csLogicSymbols "?" display
|
|
64 syn match csLogicSymbols ":" display
|
7
|
65
|
|
66 " Comments
|
|
67 "
|
|
68 " PROVIDES: @csCommentHook
|
14372
|
69 syn keyword csTodo contained TODO FIXME XXX NOTE HACK TBD
|
|
70 syn region csComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spell
|
|
71 syn match csComment "//.*$" contains=@csCommentHook,csTodo,@Spell
|
7
|
72
|
|
73 " xml markup inside '///' comments
|
14372
|
74 syn cluster xmlRegionHook add=csXmlCommentLeader
|
|
75 syn cluster xmlCdataHook add=csXmlCommentLeader
|
|
76 syn cluster xmlStartTagHook add=csXmlCommentLeader
|
|
77 syn keyword csXmlTag contained Libraries Packages Types Excluded ExcludedTypeName ExcludedLibraryName
|
|
78 syn keyword csXmlTag contained ExcludedBucketName TypeExcluded Type TypeKind TypeSignature AssemblyInfo
|
|
79 syn keyword csXmlTag contained AssemblyName AssemblyPublicKey AssemblyVersion AssemblyCulture Base
|
|
80 syn keyword csXmlTag contained BaseTypeName Interfaces Interface InterfaceName Attributes Attribute
|
|
81 syn keyword csXmlTag contained AttributeName Members Member MemberSignature MemberType MemberValue
|
|
82 syn keyword csXmlTag contained ReturnValue ReturnType Parameters Parameter MemberOfPackage
|
|
83 syn keyword csXmlTag contained ThreadingSafetyStatement Docs devdoc example overload remarks returns summary
|
|
84 syn keyword csXmlTag contained threadsafe value internalonly nodoc exception param permission platnote
|
|
85 syn keyword csXmlTag contained seealso b c i pre sub sup block code note paramref see subscript superscript
|
|
86 syn keyword csXmlTag contained list listheader item term description altcompliant altmember
|
7
|
87
|
|
88 syn cluster xmlTagHook add=csXmlTag
|
|
89
|
14372
|
90 syn match csXmlCommentLeader +\/\/\/+ contained
|
|
91 syn match csXmlComment +\/\/\/.*$+ contains=csXmlCommentLeader,@csXml,@Spell
|
|
92 syn include @csXml syntax/xml.vim
|
|
93 hi def link xmlRegion Comment
|
7
|
94
|
|
95
|
|
96 " [1] 9.5 Pre-processing directives
|
14372
|
97 syn region csPreCondit start="^\s*#\s*\(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\)" skip="\\$" end="$" contains=csComment keepend
|
|
98 syn region csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$" end="^\s*#\s*endregion" transparent fold contains=TOP
|
|
99 syn region csSummary start="^\s*/// <summary" end="^\%\(\s*///\)\@!" transparent fold keepend
|
7
|
100
|
|
101
|
14372
|
102 syn region csClassType start="@\@1<!\<class\>"hs=s+6 end="[:\n{]"me=e-1 contains=csClass
|
|
103 syn region csNewType start="@\@1<!\<new\>"hs=s+4 end="[;\n{(<\[]"me=e-1 contains=csNew contains=csNewType
|
|
104 syn region csIsType start=" is "hs=s+4 end="[A-Za-z0-9]\+" oneline contains=csIsAs
|
|
105 syn region csIsType start=" as "hs=s+4 end="[A-Za-z0-9]\+" oneline contains=csIsAs
|
|
106 syn keyword csNew new contained
|
|
107 syn keyword csClass class contained
|
|
108 syn keyword csIsAs is as
|
7
|
109
|
|
110 " Strings and constants
|
14372
|
111 syn match csSpecialError "\\." contained
|
|
112 syn match csSpecialCharError "[^']" contained
|
7
|
113 " [1] 9.4.4.4 Character literals
|
14372
|
114 syn match csSpecialChar +\\["\\'0abfnrtvx]+ contained display
|
|
115 syn match csUnicodeNumber +\\u\x\{4}+ contained contains=csUnicodeSpecifier display
|
|
116 syn match csUnicodeNumber +\\U\x\{8}+ contained contains=csUnicodeSpecifier display
|
|
117 syn match csUnicodeSpecifier +\\[uU]+ contained display
|
|
118
|
|
119 syn region csString matchgroup=csQuote start=+"+ end=+"+ end=+$+ extend contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
|
|
120 syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError display
|
|
121 syn match csCharacter "'\\''" contains=csSpecialChar display
|
|
122 syn match csCharacter "'[^\\]'" display
|
|
123 syn match csNumber "\<0[0-7]*[lL]\=\>" display
|
|
124 syn match csNumber "\<0[xX]\x\+[lL]\=\>" display
|
|
125 syn match csNumber "\<\d\+[lL]\=\>" display
|
|
126 syn match csNumber "\<\d\+\.\d*\%\([eE][-+]\=\d\+\)\=[fFdD]\=" display
|
|
127 syn match csNumber "\.\d\+\%\([eE][-+]\=\d\+\)\=[fFdD]\=" display
|
|
128 syn match csNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" display
|
|
129 syn match csNumber "\<\d\+\%\([eE][-+]\=\d\+\)\=[fFdD]\>" display
|
|
130
|
|
131 syn region csInterpolatedString matchgroup=csQuote start=+\$"+ end=+"+ end=+$+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
|
|
132
|
|
133 syn region csInterpolation matchgroup=csInterpolationDelimiter start=+{+ end=+}+ keepend contained contains=@csAll,csBracketed,csInterpolationAlign,csInterpolationFormat
|
|
134 syn match csEscapedInterpolation "{{" transparent contains=NONE display
|
|
135 syn match csEscapedInterpolation "}}" transparent contains=NONE display
|
|
136 syn region csInterpolationAlign matchgroup=csInterpolationAlignDel start=+,+ end=+}+ end=+:+me=e-1 contained contains=csNumber,csConstant,csCharacter,csParens,csOpSymbols,csString,csBracketed display
|
|
137 syn match csInterpolationFormat +:[^}]\+}+ contained contains=csInterpolationFormatDel display
|
|
138 syn match csInterpolationAlignDel +,+ contained display
|
|
139 syn match csInterpolationFormatDel +:+ contained display
|
|
140
|
|
141 syn region csVerbatimString matchgroup=csQuote start=+@"+ end=+"+ skip=+""+ extend contains=csVerbatimQuote,@Spell
|
|
142 syn match csVerbatimQuote +""+ contained
|
|
143 syn match csQuoteError +@$"+he=s+2,me=s+2
|
|
144
|
|
145 syn region csInterVerbString matchgroup=csQuote start=+\$@"+ end=+"+ skip=+""+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,csVerbatimQuote,@Spell
|
|
146
|
|
147 syn region csBracketed matchgroup=csParens start=+(+ end=+)+ contained transparent contains=@csAll,csBracketed
|
|
148
|
|
149 syn cluster csAll contains=csCharacter,csClassType,csComment,csContextualStatement,csEndColon,csInterpolatedString,csIsType,csLabel,csLogicSymbols,csNewType,csConstant,csNumber,csOpSymbols,csOperatorError,csParens,csPreCondit,csRegion,csString,csSummary,csUnicodeNumber,csUnicodeSpecifier,csVerbatimString
|
7
|
150
|
|
151 " The default highlighting.
|
14372
|
152 hi def link csType Type
|
|
153 hi def link csClassType Type
|
|
154 hi def link csIsType Type
|
15131
|
155 hi def link csStorage Structure
|
|
156 hi def link csClass Structure
|
14372
|
157 hi def link csRepeat Repeat
|
|
158 hi def link csConditional Conditional
|
|
159 hi def link csLabel Label
|
|
160 hi def link csModifier StorageClass
|
|
161 hi def link csConstant Constant
|
|
162 hi def link csException Exception
|
15131
|
163 hi def link csTypeOf Operator
|
|
164 hi def link csTypeOfStatement Typedef
|
14372
|
165 hi def link csUnspecifiedStatement Statement
|
|
166 hi def link csUnsupportedStatement Statement
|
|
167 hi def link csUnspecifiedKeyword Keyword
|
|
168 hi def link csNew Statement
|
|
169 hi def link csLinq Statement
|
|
170 hi def link csIsAs Keyword
|
|
171 hi def link csAsync Keyword
|
|
172 hi def link csContextualStatement Statement
|
|
173 hi def link csOperatorError Error
|
|
174
|
|
175 hi def link csTodo Todo
|
|
176 hi def link csComment Comment
|
7
|
177
|
14372
|
178 hi def link csOpSymbols Operator
|
15131
|
179 hi def link csLogicSymbols Operator
|
7
|
180
|
14372
|
181 hi def link csSpecialError Error
|
|
182 hi def link csSpecialCharError Error
|
|
183 hi def link csString String
|
|
184 hi def link csQuote String
|
|
185 hi def link csQuoteError Error
|
|
186 hi def link csInterpolatedString String
|
|
187 hi def link csVerbatimString String
|
|
188 hi def link csInterVerbString String
|
|
189 hi def link csVerbatimQuote SpecialChar
|
|
190 hi def link csPreCondit PreCondit
|
|
191 hi def link csCharacter Character
|
|
192 hi def link csSpecialChar SpecialChar
|
|
193 hi def link csNumber Number
|
|
194 hi def link csUnicodeNumber SpecialChar
|
|
195 hi def link csUnicodeSpecifier SpecialChar
|
|
196 hi def link csInterpolationDelimiter Delimiter
|
|
197 hi def link csInterpolationAlignDel csInterpolationDelimiter
|
|
198 hi def link csInterpolationFormat csInterpolationDelimiter
|
|
199 hi def link csInterpolationFormatDel csInterpolationDelimiter
|
7
|
200
|
|
201 " xml markup
|
14372
|
202 hi def link csXmlCommentLeader Comment
|
|
203 hi def link csXmlComment Comment
|
|
204 hi def link csXmlTag Statement
|
7
|
205
|
15131
|
206 let b:current_syntax = 'cs'
|
7
|
207
|
15131
|
208 let &cpoptions = s:save_cpo
|
|
209 unlet s:save_cpo
|
7
|
210
|
14372
|
211 " vim: vts=16,28
|