cs.vim 9.6 KB

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