blob: 104470ac4b3834d0f89281b1bb32c87bbe170ff8 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaara9604e62018-07-21 05:56:22 +02002" Language: C#
3" Maintainer: Nick Jensen <nickspoon@gmail.com>
4" Former Maintainers: Anduin Withers <awithers@anduin.com>
5" Johannes Zellner <johannes@zellner.org>
Bram Moolenaar86b48162022-12-06 18:20:10 +00006" Last Change: 2022-11-16
Bram Moolenaara9604e62018-07-21 05:56:22 +02007" Filenames: *.cs
8" License: Vim (see :h license)
9" Repository: https://github.com/nickspoons/vim-cs
Bram Moolenaar071d4272004-06-13 20:20:40 +000010"
Bram Moolenaar63f32602022-06-09 20:45:54 +010011" References:
12" - ECMA-334 5th Edition: C# Language Specification
13" https://www.ecma-international.org/publications-and-standards/standards/ecma-334/
14" - C# Language Design: Draft 6th Edition and later proposals
15" https://github.com/dotnet/csharplang
Bram Moolenaar071d4272004-06-13 20:20:40 +000016
Bram Moolenaard47d5222018-12-09 20:43:55 +010017if exists('b:current_syntax')
18 finish
Bram Moolenaar071d4272004-06-13 20:20:40 +000019endif
20
Bram Moolenaard47d5222018-12-09 20:43:55 +010021let s:save_cpo = &cpoptions
22set cpoptions&vim
Bram Moolenaar071d4272004-06-13 20:20:40 +000023
Bram Moolenaara9604e62018-07-21 05:56:22 +020024syn keyword csType bool byte char decimal double float int long object sbyte short string T uint ulong ushort var void dynamic
Bram Moolenaar63f32602022-06-09 20:45:54 +010025syn keyword csType nint nuint " contextual
26
27syn keyword csStorage enum interface namespace struct
Bram Moolenaar86b48162022-12-06 18:20:10 +000028syn match csStorage "\<record\ze\_s\+@\=\h\w*\_s*[<(:{;]"
29syn match csStorage "\%(\<\%(partial\|new\|public\|protected\|internal\|private\|abstract\|sealed\|static\|unsafe\|readonly\)\)\@9<=\_s\+record\>"
30syn match csStorage "\<record\ze\_s\+\%(class\|struct\)"
Bram Moolenaar63f32602022-06-09 20:45:54 +010031syn match csStorage "\<delegate\>"
Bram Moolenaara9604e62018-07-21 05:56:22 +020032syn keyword csRepeat break continue do for foreach goto return while
33syn keyword csConditional else if switch
34syn keyword csLabel case default
Bram Moolenaar071d4272004-06-13 20:20:40 +000035
Bram Moolenaar63f32602022-06-09 20:45:54 +010036syn match csNamespaceAlias "@\=\h\w*\ze\_s*::" display
37syn match csGlobalNamespaceAlias "global\ze\_s*::" display
38syn cluster csNamespaceAlias contains=csGlobalNamespaceAlias,csNamespaceAlias,csNamespaceAliasQualifier
39
40" user labels
41syn match csLabel display +^\s*\I\i*\s*:\%([^:]\)\@=+
42
43" Function pointers
44syn match csType "\<delegate\s*\*" contains=csOpSymbols nextgroup=csManagedModifier skipwhite skipempty
45syn keyword csManagedModifier managed unmanaged contained
46
47" Modifiers
48syn match csUsingModifier "\<global\ze\_s\+using\>"
49syn keyword csAccessModifier internal private protected public
Bram Moolenaar86b48162022-12-06 18:20:10 +000050syn keyword csModifier operator nextgroup=csCheckedModifier skipwhite skipempty
51syn keyword csCheckedModifier checked contained
52
Bram Moolenaar63f32602022-06-09 20:45:54 +010053" TODO: in new out
54syn keyword csModifier abstract const event override readonly sealed static virtual volatile
55syn match csModifier "\<\%(extern\|fixed\|unsafe\)\>"
56syn match csModifier "\<partial\ze\_s\+\%(class\|struct\|interface\|record\|void\)\>"
57
58syn keyword csException try catch finally throw when
59syn keyword csLinq ascending by descending equals from group in into join let on orderby select
60syn match csLinq "\<where\>"
61
62" Type parameter constraint clause
63syn match csStorage "\<where\>\ze\_s\+@\=\h\w*\_s*:"
64
65" Async
66syn keyword csAsyncModifier async
67syn keyword csAsyncOperator await
68
69syn match csStorage "\<extern\ze\s\+alias\>"
70syn match csStorage "\%(\<extern\s\+\)\@16<=alias\>"
71
72syn match csStatement "\<\%(checked\|unchecked\|unsafe\)\ze\_s*{"
73syn match csStatement "\<fixed\ze\_s*("
74syn keyword csStatement lock
75syn match csStatement "\<yield\ze\_s\+\%(return\|break\)\>"
76
77syn match csAccessor "\<\%(get\|set\|init\|add\|remove\)\ze\_s*\%([;{]\|=>\)"
78
79syn keyword csAccess base
80syn match csAccess "\<this\>"
81
82" Extension method parameter modifier
83syn match csModifier "\<this\ze\_s\+@\=\h"
84
Bram Moolenaar86b48162022-12-06 18:20:10 +000085syn keyword csUnspecifiedStatement as in is nameof out params ref sizeof stackalloc using
Bram Moolenaar63f32602022-06-09 20:45:54 +010086syn keyword csUnsupportedStatement value
Bram Moolenaara9604e62018-07-21 05:56:22 +020087syn keyword csUnspecifiedKeyword explicit implicit
Bram Moolenaar071d4272004-06-13 20:20:40 +000088
Bram Moolenaard47d5222018-12-09 20:43:55 +010089" Operators
Bram Moolenaar63f32602022-06-09 20:45:54 +010090syn keyword csTypeOf typeof nextgroup=csTypeOfOperand,csTypeOfError skipwhite skipempty
91syn region csTypeOfOperand matchgroup=csParens start="(" end=")" contained contains=csType
92syn match csTypeOfError "[^([:space:]]" contained
93syn match csKeywordOperator "\<\%(checked\|unchecked\)\ze\_s*("
Bram Moolenaard47d5222018-12-09 20:43:55 +010094
Bram Moolenaara9604e62018-07-21 05:56:22 +020095" Punctuation
Bram Moolenaar63f32602022-06-09 20:45:54 +010096syn match csBraces "[{}[\]]" display
Bram Moolenaara9604e62018-07-21 05:56:22 +020097syn match csParens "[()]" display
Bram Moolenaar088e8e32019-08-08 22:15:18 +020098syn match csOpSymbols "+\{1,2}" display
99syn match csOpSymbols "-\{1,2}" display
100syn match csOpSymbols "=\{1,2}" display
101syn match csOpSymbols ">\{1,2}" display
102syn match csOpSymbols "<\{1,2}" display
Bram Moolenaara9604e62018-07-21 05:56:22 +0200103syn match csOpSymbols "[!><+\-*/]=" display
104syn match csOpSymbols "[!*/^]" display
105syn match csOpSymbols "=>" display
106syn match csEndColon ";" display
107syn match csLogicSymbols "&&" display
108syn match csLogicSymbols "||" display
109syn match csLogicSymbols "?" display
110syn match csLogicSymbols ":" display
Bram Moolenaar63f32602022-06-09 20:45:54 +0100111syn match csNamespaceAliasQualifier "::" display
Bram Moolenaar071d4272004-06-13 20:20:40 +0000112
Bram Moolenaar088e8e32019-08-08 22:15:18 +0200113" Generics
Bram Moolenaar63f32602022-06-09 20:45:54 +0100114syn region csGeneric matchgroup=csGenericBraces start="<" end=">" oneline contains=csType,csGeneric,@csNamespaceAlias,csUserType,csUserIdentifier,csUserInterface,csUserMethod
Bram Moolenaar088e8e32019-08-08 22:15:18 +0200115
Bram Moolenaar071d4272004-06-13 20:20:40 +0000116" Comments
117"
118" PROVIDES: @csCommentHook
Bram Moolenaara9604e62018-07-21 05:56:22 +0200119syn keyword csTodo contained TODO FIXME XXX NOTE HACK TBD
Bram Moolenaar63f32602022-06-09 20:45:54 +0100120syn region csBlockComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spell
121syn match csLineComment "//.*$" contains=@csCommentHook,csTodo,@Spell
122syn cluster csComment contains=csLineComment,csBlockComment
Bram Moolenaar071d4272004-06-13 20:20:40 +0000123
Bram Moolenaar63f32602022-06-09 20:45:54 +0100124syn region csSummary start="^\s*/// <summary" end="^\%\(\s*///\)\@!" transparent fold keepend
Bram Moolenaar071d4272004-06-13 20:20:40 +0000125
Bram Moolenaar63f32602022-06-09 20:45:54 +0100126" xml markup inside '///' and /**...*/ comments
127syn cluster xmlRegionHook add=csXmlLineCommentLeader,csXmlBlockCommentMiddle
128syn cluster xmlCdataHook add=csXmlLineCommentLeader,csXmlBlockCommentMiddle
129syn cluster xmlStartTagHook add=csXmlLineCommentLeader,csXmlBlockCommentMiddle
130syn cluster xmlTagHook add=csXmlTag
131syn cluster xmlAttribHook add=csXmlAttrib
Bram Moolenaar071d4272004-06-13 20:20:40 +0000132
Bram Moolenaar63f32602022-06-09 20:45:54 +0100133" https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/xmldoc/recommended-tags
134syn keyword csXmlTag contained summary remarks
135syn keyword csXmlTag contained returns param paramref exception value
136syn keyword csXmlTag contained para list c code example
137syn keyword csXmlTag contained inheritdoc include
138syn keyword csXmlTag contained see seealso
139syn keyword csXmlTag contained typeparam typeparamref
140syn keyword csXmlTag contained b i u br a
141syn keyword csXmlAttrib contained cref href
142
143syn match csXmlLineCommentLeader "///" contained
144syn match csXmlLineComment "///.*$" contains=csXmlLineCommentLeader,@csXml,@Spell keepend
145syn match csXmlBlockCommentMiddle "^\s*\zs\*" contained
146syn region csXmlBlockComment start="/\*\*" end="\*/" contains=@csXml,@Spell,csXmlBlockCommentMiddle keepend
Bram Moolenaara9604e62018-07-21 05:56:22 +0200147syn include @csXml syntax/xml.vim
148hi def link xmlRegion Comment
Bram Moolenaar071d4272004-06-13 20:20:40 +0000149
Bram Moolenaar560979e2020-02-04 22:53:05 +0100150" Since syntax/xml.vim contains `syn spell toplevel`, we need to set it back to `default` here.
151syn spell default
Bram Moolenaar071d4272004-06-13 20:20:40 +0000152
Bram Moolenaar63f32602022-06-09 20:45:54 +0100153" Pre-processing directives
154syn region csPreProcDeclaration start="^\s*\zs#\s*\%(define\|undef\)\>" end="$" contains=csLineComment keepend
155syn region csPreProcConditional start="^\s*\zs#\s*\%(if\|elif\)\>" end="$" contains=csLineComment keepend
156syn region csPreProcConditional start="^\s*\zs#\s*\%(else\|endif\)\>" end="$" contains=csLineComment keepend
157syn region csPreProcLine start="^\s*\zs#\s*line\>" end="$" contains=csLineComment keepend
158syn region csPreProcDiagnostic start="^\s*\zs#\s*\%(error\|warning\)\>" end="$"
159syn region csPreProcConditionalSection matchgroup=csPreProcRegion start="^\s*#\s*region\>.*" end="^\s*#\s*endregion\>.*" transparent fold contains=TOP
160syn region csPreProcPragma start="^\s*\zs#\s*pragma\>" end="$" contains=csLineComment keepend
161syn region csPreProcNullable start="^\s*\zs#\s*nullable\>" end="$" contains=csLineComment keepend
Bram Moolenaar071d4272004-06-13 20:20:40 +0000162
Bram Moolenaar63f32602022-06-09 20:45:54 +0100163if expand('%:e') == 'csx' || getline('1') =~ '^#!.*\<dotnet-script\>'
164 syn region csPreProcInclude start="^\s*\zs#\s*\%(load\|r\)\>" end="$" contains=csLineComment keepend
165 syn match csShebang "\%^#!.*" display
166endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000167
Bram Moolenaar63f32602022-06-09 20:45:54 +0100168syn cluster csPreProcessor contains=csPreProc.*
169
170syn region csClassType start="\<class\>"hs=s+6 end=">" end="[:{]"me=e-1 contains=csClass
Bram Moolenaar088e8e32019-08-08 22:15:18 +0200171" csUserType may be defined by user scripts/plugins - it should be contained in csNewType
Bram Moolenaar63f32602022-06-09 20:45:54 +0100172syn region csNewType start="\<new\>"hs=s+4 end="[;\n{(<\[]"me=e-1 contains=csNew,@csNamespaceAlias,csUserType
Bram Moolenaara9604e62018-07-21 05:56:22 +0200173syn region csIsType start=" is "hs=s+4 end="[A-Za-z0-9]\+" oneline contains=csIsAs
174syn region csIsType start=" as "hs=s+4 end="[A-Za-z0-9]\+" oneline contains=csIsAs
175syn keyword csNew new contained
176syn keyword csClass class contained
177syn keyword csIsAs is as
Bram Moolenaar071d4272004-06-13 20:20:40 +0000178
Bram Moolenaar63f32602022-06-09 20:45:54 +0100179syn keyword csBoolean false true
180syn keyword csNull null
181
Bram Moolenaar071d4272004-06-13 20:20:40 +0000182" Strings and constants
Bram Moolenaara9604e62018-07-21 05:56:22 +0200183syn match csSpecialError "\\." contained
184syn match csSpecialCharError "[^']" contained
Bram Moolenaar63f32602022-06-09 20:45:54 +0100185" Character literals
186syn match csSpecialChar +\\["\\'0abfnrtv]+ contained display
187syn match csUnicodeNumber +\\x\x\{1,4}+ contained contains=csUnicodeSpecifier display
Bram Moolenaara9604e62018-07-21 05:56:22 +0200188syn match csUnicodeNumber +\\u\x\{4}+ contained contains=csUnicodeSpecifier display
Bram Moolenaar63f32602022-06-09 20:45:54 +0100189syn match csUnicodeNumber +\\U00\x\{6}+ contained contains=csUnicodeSpecifier display
190syn match csUnicodeSpecifier +\\[uUx]+ contained display
Bram Moolenaara9604e62018-07-21 05:56:22 +0200191
Bram Moolenaar86b48162022-12-06 18:20:10 +0000192syn region csString matchgroup=csQuote start=+"+ end=+"\%(u8\)\=+ end=+$+ extend contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
Bram Moolenaar23515b42020-11-29 14:36:24 +0100193syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError,csUnicodeNumber display
Bram Moolenaara9604e62018-07-21 05:56:22 +0200194syn match csCharacter "'\\''" contains=csSpecialChar display
195syn match csCharacter "'[^\\]'" display
Bram Moolenaar63f32602022-06-09 20:45:54 +0100196
197" Numbers
198syn case ignore
199syn match csInteger "\<0b[01_]*[01]\%([lu]\|lu\|ul\)\=\>" display
200syn match csInteger "\<\d\+\%(_\+\d\+\)*\%([lu]\|lu\|ul\)\=\>" display
201syn match csInteger "\<0x[[:xdigit:]_]*\x\%([lu]\|lu\|ul\)\=\>" display
202syn match csReal "\<\d\+\%(_\+\d\+\)*\.\d\+\%(_\+\d\+\)*\%\(e[-+]\=\d\+\%(_\+\d\+\)*\)\=[fdm]\=" display
203syn match csReal "\.\d\+\%(_\+\d\+\)*\%(e[-+]\=\d\+\%(_\+\d\+\)*\)\=[fdm]\=\>" display
204syn match csReal "\<\d\+\%(_\+\d\+\)*e[-+]\=\d\+\%(_\+\d\+\)*[fdm]\=\>" display
205syn match csReal "\<\d\+\%(_\+\d\+\)*[fdm]\>" display
206syn case match
207syn cluster csNumber contains=csInteger,csReal
Bram Moolenaara9604e62018-07-21 05:56:22 +0200208
Bram Moolenaar86b48162022-12-06 18:20:10 +0000209syn region csInterpolatedString matchgroup=csQuote start=+\$"+ end=+"\%(u8\)\=+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
Bram Moolenaara9604e62018-07-21 05:56:22 +0200210
Bram Moolenaar23515b42020-11-29 14:36:24 +0100211syn region csInterpolation matchgroup=csInterpolationDelimiter start=+{+ end=+}+ keepend contained contains=@csAll,csBraced,csBracketed,csInterpolationAlign,csInterpolationFormat
Bram Moolenaara9604e62018-07-21 05:56:22 +0200212syn match csEscapedInterpolation "{{" transparent contains=NONE display
213syn match csEscapedInterpolation "}}" transparent contains=NONE display
Bram Moolenaar63f32602022-06-09 20:45:54 +0100214syn region csInterpolationAlign matchgroup=csInterpolationAlignDel start=+,+ end=+}+ end=+:+me=e-1 contained contains=@csNumber,csBoolean,csConstant,csCharacter,csParens,csOpSymbols,csString,csBracketed display
Bram Moolenaara9604e62018-07-21 05:56:22 +0200215syn match csInterpolationFormat +:[^}]\+}+ contained contains=csInterpolationFormatDel display
216syn match csInterpolationAlignDel +,+ contained display
217syn match csInterpolationFormatDel +:+ contained display
218
Bram Moolenaar86b48162022-12-06 18:20:10 +0000219syn region csVerbatimString matchgroup=csQuote start=+@"+ end=+"\%(u8\)\=+ skip=+""+ extend contains=csVerbatimQuote,@Spell
Bram Moolenaara9604e62018-07-21 05:56:22 +0200220syn match csVerbatimQuote +""+ contained
Bram Moolenaara9604e62018-07-21 05:56:22 +0200221
Bram Moolenaar86b48162022-12-06 18:20:10 +0000222syn region csInterVerbString matchgroup=csQuote start=+$@"+ start=+@$"+ end=+"\%(u8\)\=+ skip=+""+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,csVerbatimQuote,@Spell
Bram Moolenaar63f32602022-06-09 20:45:54 +0100223
224syn cluster csString contains=csString,csInterpolatedString,csVerbatimString,csInterVerbString
225
226syn cluster csLiteral contains=csBoolean,@csNumber,csCharacter,@csString,csNull
Bram Moolenaara9604e62018-07-21 05:56:22 +0200227
Bram Moolenaar23515b42020-11-29 14:36:24 +0100228syn region csBracketed matchgroup=csParens start=+(+ end=+)+ extend contained transparent contains=@csAll,csBraced,csBracketed
229syn region csBraced matchgroup=csParens start=+{+ end=+}+ extend contained transparent contains=@csAll,csBraced,csBracketed
Bram Moolenaara9604e62018-07-21 05:56:22 +0200230
Bram Moolenaar63f32602022-06-09 20:45:54 +0100231syn cluster csAll contains=@csLiteral,csClassType,@csComment,csEndColon,csIsType,csLabel,csLogicSymbols,csNewType,csOpSymbols,csParens,@csPreProcessor,csSummary,@csNamespaceAlias,csType,csUnicodeNumber,csUserType,csUserIdentifier,csUserInterface,csUserMethod
232
233" Keyword identifiers
234syn match csIdentifier "@\h\w*"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000235
236" The default highlighting.
Bram Moolenaara9604e62018-07-21 05:56:22 +0200237hi def link csUnspecifiedStatement Statement
238hi def link csUnsupportedStatement Statement
239hi def link csUnspecifiedKeyword Keyword
Bram Moolenaar63f32602022-06-09 20:45:54 +0100240
241hi def link csGlobalNamespaceAlias Include
242
243hi def link csType Type
244hi def link csClassType Type
245hi def link csIsType Type
246
247hi def link csStorage Structure
248hi def link csClass Structure
Bram Moolenaara9604e62018-07-21 05:56:22 +0200249hi def link csNew Statement
Bram Moolenaara9604e62018-07-21 05:56:22 +0200250hi def link csIsAs Keyword
Bram Moolenaar63f32602022-06-09 20:45:54 +0100251hi def link csAccessor Keyword
252hi def link csAccess Keyword
253
254hi def link csLinq Statement
255
256hi def link csStatement Statement
257hi def link csRepeat Repeat
258hi def link csConditional Conditional
259hi def link csLabel Label
260hi def link csException Exception
261
262hi def link csModifier StorageClass
263hi def link csAccessModifier csModifier
264hi def link csAsyncModifier csModifier
Bram Moolenaar86b48162022-12-06 18:20:10 +0000265hi def link csCheckedModifier csModifier
Bram Moolenaar63f32602022-06-09 20:45:54 +0100266hi def link csManagedModifier csModifier
267hi def link csUsingModifier csModifier
Bram Moolenaar071d4272004-06-13 20:20:40 +0000268
Bram Moolenaara9604e62018-07-21 05:56:22 +0200269hi def link csTodo Todo
270hi def link csComment Comment
Bram Moolenaar63f32602022-06-09 20:45:54 +0100271hi def link csLineComment csComment
272hi def link csBlockComment csComment
Bram Moolenaar071d4272004-06-13 20:20:40 +0000273
Bram Moolenaar63f32602022-06-09 20:45:54 +0100274hi def link csKeywordOperator Keyword
275hi def link csAsyncOperator csKeywordOperator
276hi def link csTypeOf csKeywordOperator
277hi def link csTypeOfOperand Typedef
278hi def link csTypeOfError Error
Bram Moolenaara9604e62018-07-21 05:56:22 +0200279hi def link csOpSymbols Operator
Bram Moolenaard47d5222018-12-09 20:43:55 +0100280hi def link csLogicSymbols Operator
Bram Moolenaara9604e62018-07-21 05:56:22 +0200281
282hi def link csSpecialError Error
283hi def link csSpecialCharError Error
284hi def link csString String
285hi def link csQuote String
Bram Moolenaara9604e62018-07-21 05:56:22 +0200286hi def link csInterpolatedString String
287hi def link csVerbatimString String
288hi def link csInterVerbString String
289hi def link csVerbatimQuote SpecialChar
Bram Moolenaar63f32602022-06-09 20:45:54 +0100290
291hi def link csPreProc PreProc
292hi def link csPreProcDeclaration Define
293hi def link csPreProcConditional PreCondit
294hi def link csPreProcLine csPreProc
295hi def link csPreProcDiagnostic csPreProc
296hi def link csPreProcRegion csPreProc
297hi def link csPreProcPragma csPreProc
298hi def link csPreProcNullable csPreProc
299hi def link csPreProcInclude csPreProc
300hi def link csShebang csPreProc
301
302hi def link csConstant Constant
303hi def link csNull Constant
304hi def link csBoolean Boolean
Bram Moolenaara9604e62018-07-21 05:56:22 +0200305hi def link csCharacter Character
306hi def link csSpecialChar SpecialChar
Bram Moolenaar63f32602022-06-09 20:45:54 +0100307hi def link csInteger Number
308hi def link csReal Float
Bram Moolenaara9604e62018-07-21 05:56:22 +0200309hi def link csUnicodeNumber SpecialChar
310hi def link csUnicodeSpecifier SpecialChar
311hi def link csInterpolationDelimiter Delimiter
312hi def link csInterpolationAlignDel csInterpolationDelimiter
313hi def link csInterpolationFormat csInterpolationDelimiter
314hi def link csInterpolationFormatDel csInterpolationDelimiter
Bram Moolenaar071d4272004-06-13 20:20:40 +0000315
Bram Moolenaar088e8e32019-08-08 22:15:18 +0200316hi def link csGenericBraces csBraces
317
Bram Moolenaar071d4272004-06-13 20:20:40 +0000318" xml markup
Bram Moolenaar63f32602022-06-09 20:45:54 +0100319hi def link csXmlLineCommentLeader Comment
320hi def link csXmlLineComment Comment
321hi def link csXmlBlockComment Comment
322hi def link csXmlBlockCommentMiddle csXmlBlockComment
Bram Moolenaara9604e62018-07-21 05:56:22 +0200323hi def link csXmlTag Statement
Bram Moolenaar63f32602022-06-09 20:45:54 +0100324hi def link csXmlAttrib Statement
Bram Moolenaar071d4272004-06-13 20:20:40 +0000325
Bram Moolenaard47d5222018-12-09 20:43:55 +0100326let b:current_syntax = 'cs'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000327
Bram Moolenaard47d5222018-12-09 20:43:55 +0100328let &cpoptions = s:save_cpo
329unlet s:save_cpo
Bram Moolenaar071d4272004-06-13 20:20:40 +0000330
Bram Moolenaara9604e62018-07-21 05:56:22 +0200331" vim: vts=16,28