blob: 3ae6bfca8d5d40ce76cbcb664700285c8fb4158d [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>
Nick Jensen96395e12025-03-15 09:49:13 +01006" Last Change: 2025-03-14
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
Nick Jensen96395e12025-03-15 09:49:13 +0100193
194for s:i in range(3, get(g:, "cs_raw_string_quote_count", 8))
195 exe 'syn region csRawString' .. s:i .. ' matchgroup=csQuote start=+\z("\{' .. s:i .. '}\)+ end=+\z1+ oneline nextgroup=csRawStringError' .. s:i
196 exe 'syn region csRawString' .. s:i .. ' matchgroup=csQuote start=+\z("\{' .. s:i .. '}\)\s*$+ end=+^\s*\z1+ nextgroup=csRawStringError' .. s:i .. ' contains=csRawStringError' .. s:i
197 exe 'syn match csRawStringError' .. s:i .. ' /\%("\{' .. s:i .. '}\)\@' .. s:i .. '<="\+/ contained'
198 exe 'syn match csRawStringError' .. s:i .. ' /\S.\{-}\s*"\{' .. s:i .. '}"\@!/ contained'
199
200 exe 'hi def link csRawString' .. s:i .. ' csString'
201 exe 'hi def link csRawStringError' .. s:i .. ' Error'
202endfor
203unlet s:i
204
Bram Moolenaar23515b42020-11-29 14:36:24 +0100205syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError,csUnicodeNumber display
Bram Moolenaara9604e62018-07-21 05:56:22 +0200206syn match csCharacter "'\\''" contains=csSpecialChar display
207syn match csCharacter "'[^\\]'" display
Bram Moolenaar63f32602022-06-09 20:45:54 +0100208
209" Numbers
210syn case ignore
211syn match csInteger "\<0b[01_]*[01]\%([lu]\|lu\|ul\)\=\>" display
212syn match csInteger "\<\d\+\%(_\+\d\+\)*\%([lu]\|lu\|ul\)\=\>" display
213syn match csInteger "\<0x[[:xdigit:]_]*\x\%([lu]\|lu\|ul\)\=\>" display
214syn match csReal "\<\d\+\%(_\+\d\+\)*\.\d\+\%(_\+\d\+\)*\%\(e[-+]\=\d\+\%(_\+\d\+\)*\)\=[fdm]\=" display
215syn match csReal "\.\d\+\%(_\+\d\+\)*\%(e[-+]\=\d\+\%(_\+\d\+\)*\)\=[fdm]\=\>" display
216syn match csReal "\<\d\+\%(_\+\d\+\)*e[-+]\=\d\+\%(_\+\d\+\)*[fdm]\=\>" display
217syn match csReal "\<\d\+\%(_\+\d\+\)*[fdm]\>" display
218syn case match
219syn cluster csNumber contains=csInteger,csReal
Bram Moolenaara9604e62018-07-21 05:56:22 +0200220
Bram Moolenaar86b48162022-12-06 18:20:10 +0000221syn region csInterpolatedString matchgroup=csQuote start=+\$"+ end=+"\%(u8\)\=+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
Bram Moolenaara9604e62018-07-21 05:56:22 +0200222
Bram Moolenaar23515b42020-11-29 14:36:24 +0100223syn region csInterpolation matchgroup=csInterpolationDelimiter start=+{+ end=+}+ keepend contained contains=@csAll,csBraced,csBracketed,csInterpolationAlign,csInterpolationFormat
Bram Moolenaara9604e62018-07-21 05:56:22 +0200224syn match csEscapedInterpolation "{{" transparent contains=NONE display
225syn match csEscapedInterpolation "}}" transparent contains=NONE display
Bram Moolenaar63f32602022-06-09 20:45:54 +0100226syn 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 +0200227syn match csInterpolationFormat +:[^}]\+}+ contained contains=csInterpolationFormatDel display
228syn match csInterpolationAlignDel +,+ contained display
229syn match csInterpolationFormatDel +:+ contained display
230
Bram Moolenaar86b48162022-12-06 18:20:10 +0000231syn region csVerbatimString matchgroup=csQuote start=+@"+ end=+"\%(u8\)\=+ skip=+""+ extend contains=csVerbatimQuote,@Spell
Nick Jensen96395e12025-03-15 09:49:13 +0100232
233" Interpolated raw string literals
234for s:i in range(1, get(g:, "cs_raw_string_interpolation_brace_count", 8))
235 exe 'syn region csInterpolatedRawString' .. s:i .. ' matchgroup=csQuote start=+$\{' .. s:i .. '}\z("""\+\)+ end=+\z1+ extend contains=csInterpolation' .. s:i .. ',csInterpolationDelimiterError' .. s:i .. ',@Spell'
236 exe 'syn match csInterpolationDelimiterError' .. s:i .. ' "}\{' .. s:i .. '}" contained'
237 exe 'syn match csInterpolationDelimiterError' .. s:i .. ' "{\{' .. 2 * s:i .. ',}" contained'
238 exe 'syn match csInterpolationDelimiterError' .. s:i .. ' "}\{' .. 2 * s:i .. ',}" contained'
239 exe 'syn region csInterpolation' .. s:i .. ' matchgroup=csInterpolationDelimiter start=+\%({\{' .. s:i .. '}\)\@' .. s:i .. '<!{\{' .. s:i .. '}{\@!+ end=+}\@<!}\{' .. s:i .. '}\%(}\{' .. s:i .. '}\)\@!+' ..
240 \ ' keepend contained contains=@csAll,csBraced,csBracketed,csInterpolationAlign,csInterpolationFormat,csInterpolationDelimiterError' .. s:i
241
242 exe 'hi def link csInterpolationDelimiterError' .. s:i .. ' Error'
243 exe 'hi def link csInterpolatedRawString' .. s:i .. ' csRawString'
244endfor
245unlet s:i
246
Bram Moolenaara9604e62018-07-21 05:56:22 +0200247syn match csVerbatimQuote +""+ contained
Bram Moolenaara9604e62018-07-21 05:56:22 +0200248
Bram Moolenaar86b48162022-12-06 18:20:10 +0000249syn 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 +0100250
Nick Jensen96395e12025-03-15 09:49:13 +0100251syn cluster csString contains=csString,csInterpolatedString,csVerbatimString,csInterVerbString,csRawString
Bram Moolenaar63f32602022-06-09 20:45:54 +0100252
253syn cluster csLiteral contains=csBoolean,@csNumber,csCharacter,@csString,csNull
Bram Moolenaara9604e62018-07-21 05:56:22 +0200254
Bram Moolenaar23515b42020-11-29 14:36:24 +0100255syn region csBracketed matchgroup=csParens start=+(+ end=+)+ extend contained transparent contains=@csAll,csBraced,csBracketed
256syn region csBraced matchgroup=csParens start=+{+ end=+}+ extend contained transparent contains=@csAll,csBraced,csBracketed
Bram Moolenaara9604e62018-07-21 05:56:22 +0200257
Bram Moolenaar63f32602022-06-09 20:45:54 +0100258syn cluster csAll contains=@csLiteral,csClassType,@csComment,csEndColon,csIsType,csLabel,csLogicSymbols,csNewType,csOpSymbols,csParens,@csPreProcessor,csSummary,@csNamespaceAlias,csType,csUnicodeNumber,csUserType,csUserIdentifier,csUserInterface,csUserMethod
259
260" Keyword identifiers
261syn match csIdentifier "@\h\w*"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000262
263" The default highlighting.
Bram Moolenaara9604e62018-07-21 05:56:22 +0200264hi def link csUnspecifiedStatement Statement
265hi def link csUnsupportedStatement Statement
266hi def link csUnspecifiedKeyword Keyword
Bram Moolenaar63f32602022-06-09 20:45:54 +0100267
268hi def link csGlobalNamespaceAlias Include
269
270hi def link csType Type
271hi def link csClassType Type
272hi def link csIsType Type
273
274hi def link csStorage Structure
275hi def link csClass Structure
Bram Moolenaara9604e62018-07-21 05:56:22 +0200276hi def link csNew Statement
Bram Moolenaara9604e62018-07-21 05:56:22 +0200277hi def link csIsAs Keyword
Bram Moolenaar63f32602022-06-09 20:45:54 +0100278hi def link csAccessor Keyword
279hi def link csAccess Keyword
280
281hi def link csLinq Statement
282
283hi def link csStatement Statement
284hi def link csRepeat Repeat
285hi def link csConditional Conditional
286hi def link csLabel Label
287hi def link csException Exception
288
289hi def link csModifier StorageClass
290hi def link csAccessModifier csModifier
291hi def link csAsyncModifier csModifier
Bram Moolenaar86b48162022-12-06 18:20:10 +0000292hi def link csCheckedModifier csModifier
Bram Moolenaar63f32602022-06-09 20:45:54 +0100293hi def link csManagedModifier csModifier
294hi def link csUsingModifier csModifier
Bram Moolenaar071d4272004-06-13 20:20:40 +0000295
Bram Moolenaara9604e62018-07-21 05:56:22 +0200296hi def link csTodo Todo
297hi def link csComment Comment
Bram Moolenaar63f32602022-06-09 20:45:54 +0100298hi def link csLineComment csComment
299hi def link csBlockComment csComment
Bram Moolenaar071d4272004-06-13 20:20:40 +0000300
Bram Moolenaar63f32602022-06-09 20:45:54 +0100301hi def link csKeywordOperator Keyword
302hi def link csAsyncOperator csKeywordOperator
303hi def link csTypeOf csKeywordOperator
304hi def link csTypeOfOperand Typedef
305hi def link csTypeOfError Error
Bram Moolenaara9604e62018-07-21 05:56:22 +0200306hi def link csOpSymbols Operator
Bram Moolenaard47d5222018-12-09 20:43:55 +0100307hi def link csLogicSymbols Operator
Bram Moolenaara9604e62018-07-21 05:56:22 +0200308
309hi def link csSpecialError Error
310hi def link csSpecialCharError Error
311hi def link csString String
Nick Jensen96395e12025-03-15 09:49:13 +0100312hi def link csRawString csString
313hi def link csRawStringError Error
Bram Moolenaara9604e62018-07-21 05:56:22 +0200314hi def link csQuote String
Bram Moolenaara9604e62018-07-21 05:56:22 +0200315hi def link csInterpolatedString String
316hi def link csVerbatimString String
317hi def link csInterVerbString String
318hi def link csVerbatimQuote SpecialChar
Bram Moolenaar63f32602022-06-09 20:45:54 +0100319
320hi def link csPreProc PreProc
321hi def link csPreProcDeclaration Define
322hi def link csPreProcConditional PreCondit
323hi def link csPreProcLine csPreProc
324hi def link csPreProcDiagnostic csPreProc
325hi def link csPreProcRegion csPreProc
326hi def link csPreProcPragma csPreProc
327hi def link csPreProcNullable csPreProc
328hi def link csPreProcInclude csPreProc
329hi def link csShebang csPreProc
330
331hi def link csConstant Constant
332hi def link csNull Constant
333hi def link csBoolean Boolean
Bram Moolenaara9604e62018-07-21 05:56:22 +0200334hi def link csCharacter Character
335hi def link csSpecialChar SpecialChar
Bram Moolenaar63f32602022-06-09 20:45:54 +0100336hi def link csInteger Number
337hi def link csReal Float
Bram Moolenaara9604e62018-07-21 05:56:22 +0200338hi def link csUnicodeNumber SpecialChar
339hi def link csUnicodeSpecifier SpecialChar
340hi def link csInterpolationDelimiter Delimiter
341hi def link csInterpolationAlignDel csInterpolationDelimiter
342hi def link csInterpolationFormat csInterpolationDelimiter
343hi def link csInterpolationFormatDel csInterpolationDelimiter
Bram Moolenaar071d4272004-06-13 20:20:40 +0000344
Bram Moolenaar088e8e32019-08-08 22:15:18 +0200345hi def link csGenericBraces csBraces
346
Bram Moolenaar071d4272004-06-13 20:20:40 +0000347" xml markup
Bram Moolenaar63f32602022-06-09 20:45:54 +0100348hi def link csXmlLineCommentLeader Comment
349hi def link csXmlLineComment Comment
350hi def link csXmlBlockComment Comment
351hi def link csXmlBlockCommentMiddle csXmlBlockComment
Bram Moolenaara9604e62018-07-21 05:56:22 +0200352hi def link csXmlTag Statement
Bram Moolenaar63f32602022-06-09 20:45:54 +0100353hi def link csXmlAttrib Statement
Bram Moolenaar071d4272004-06-13 20:20:40 +0000354
Bram Moolenaard47d5222018-12-09 20:43:55 +0100355let b:current_syntax = 'cs'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000356
Bram Moolenaard47d5222018-12-09 20:43:55 +0100357let &cpoptions = s:save_cpo
358unlet s:save_cpo
Bram Moolenaar071d4272004-06-13 20:20:40 +0000359
Bram Moolenaara9604e62018-07-21 05:56:22 +0200360" vim: vts=16,28