/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/CSharp-Mode.xshd

http://github.com/icsharpcode/ILSpy · Unknown · 292 lines · 261 code · 31 blank · 0 comment · 0 complexity · b3a4944b2996bd7d6f531a24a8c496d3 MD5 · raw file

  1. <?xml version="1.0"?>
  2. <SyntaxDefinition name="C#" extensions=".cs" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">
  3. <!-- The named colors 'Comment' and 'String' are used in SharpDevelop to detect if a line is inside a multiline string/comment -->
  4. <Color name="Comment" foreground="Green" exampleText="// comment" />
  5. <Color name="String" foreground="Blue" exampleText="string text = &quot;Hello, World!&quot;"/>
  6. <Color name="Char" foreground="Magenta" exampleText="char linefeed = '\n';"/>
  7. <Color name="Preprocessor" foreground="Green" exampleText="#region Title" />
  8. <Color name="Punctuation" exampleText="a(b.c);" />
  9. <Color name="ValueTypeKeywords" fontWeight="bold" foreground="Red" exampleText="bool b = true;" />
  10. <Color name="ReferenceTypeKeywords" foreground="Red" exampleText="object o;" />
  11. <Color name="MethodCall" foreground="MidnightBlue" fontWeight="bold" exampleText="o.ToString();"/>
  12. <Color name="NumberLiteral" foreground="DarkBlue" exampleText="3.1415f"/>
  13. <Color name="ThisOrBaseReference" fontWeight="bold" exampleText="this.Do(); base.Do();"/>
  14. <Color name="NullOrValueKeywords" fontWeight="bold" exampleText="if (value == null)"/>
  15. <Color name="Keywords" fontWeight="bold" foreground="Blue" exampleText="if (a) {} else {}"/>
  16. <Color name="GotoKeywords" foreground="Navy" exampleText="continue; return null;"/>
  17. <Color name="ContextKeywords" foreground="Navy" exampleText="var a = from x in y select z;"/>
  18. <Color name="ExceptionKeywords" fontWeight="bold" foreground="Teal" exampleText="try {} catch {} finally {}"/>
  19. <Color name="CheckedKeyword" fontWeight="bold" foreground="DarkGray" exampleText="checked {}"/>
  20. <Color name="UnsafeKeywords" foreground="Olive" exampleText="unsafe { fixed (..) {} }"/>
  21. <Color name="OperatorKeywords" fontWeight="bold" foreground="Pink" exampleText="public static implicit operator..."/>
  22. <Color name="ParameterModifiers" fontWeight="bold" foreground="DeepPink" exampleText="(ref int a, params int[] b)"/>
  23. <Color name="Modifiers" foreground="Brown" exampleText="static readonly int a;"/>
  24. <Color name="Visibility" fontWeight="bold" foreground="Blue" exampleText="public override void ToString();"/>
  25. <Color name="NamespaceKeywords" fontWeight="bold" foreground="Green" exampleText="namespace A.B { using System; }"/>
  26. <Color name="GetSetAddRemove" foreground="SaddleBrown" exampleText="int Prop { get; set; }"/>
  27. <Color name="TrueFalse" fontWeight="bold" foreground="DarkCyan" exampleText="b = false; a = true;" />
  28. <Color name="TypeKeywords" fontWeight="bold" foreground="DarkCyan" exampleText="if (x is int) { a = x as int; type = typeof(int); size = sizeof(int); c = new object(); }"/>
  29. <Property name="DocCommentMarker" value="///" />
  30. <RuleSet name="CommentMarkerSet">
  31. <Keywords fontWeight="bold" foreground="Red">
  32. <Word>TODO</Word>
  33. <Word>FIXME</Word>
  34. </Keywords>
  35. <Keywords fontWeight="bold" foreground="#E0E000">
  36. <Word>HACK</Word>
  37. <Word>UNDONE</Word>
  38. </Keywords>
  39. </RuleSet>
  40. <!-- This is the main ruleset. -->
  41. <RuleSet>
  42. <Span color="Preprocessor">
  43. <Begin>\#</Begin>
  44. <RuleSet name="PreprocessorSet">
  45. <Span> <!-- preprocessor directives that allows comments -->
  46. <Begin fontWeight="bold">
  47. (define|undef|if|elif|else|endif|line)\b
  48. </Begin>
  49. <RuleSet>
  50. <Span color="Comment" ruleSet="CommentMarkerSet">
  51. <Begin>//</Begin>
  52. </Span>
  53. </RuleSet>
  54. </Span>
  55. <Span> <!-- preprocessor directives that don't allow comments -->
  56. <Begin fontWeight="bold">
  57. (region|endregion|error|warning|pragma)\b
  58. </Begin>
  59. </Span>
  60. </RuleSet>
  61. </Span>
  62. <Span color="Comment">
  63. <Begin color="XmlDoc/DocComment">///(?!/)</Begin>
  64. <RuleSet>
  65. <Import ruleSet="XmlDoc/DocCommentSet"/>
  66. <Import ruleSet="CommentMarkerSet"/>
  67. </RuleSet>
  68. </Span>
  69. <Span color="Comment" ruleSet="CommentMarkerSet">
  70. <Begin>//</Begin>
  71. </Span>
  72. <Span color="Comment" ruleSet="CommentMarkerSet" multiline="true">
  73. <Begin>/\*</Begin>
  74. <End>\*/</End>
  75. </Span>
  76. <Span color="String">
  77. <Begin>"</Begin>
  78. <End>"</End>
  79. <RuleSet>
  80. <!-- span for escape sequences -->
  81. <Span begin="\\" end="."/>
  82. </RuleSet>
  83. </Span>
  84. <Span color="Char">
  85. <Begin>'</Begin>
  86. <End>'</End>
  87. <RuleSet>
  88. <!-- span for escape sequences -->
  89. <Span begin="\\" end="."/>
  90. </RuleSet>
  91. </Span>
  92. <Span color="String" multiline="true">
  93. <Begin>@"</Begin>
  94. <End>"</End>
  95. <RuleSet>
  96. <!-- span for escape sequences -->
  97. <Span begin='""' end=""/>
  98. </RuleSet>
  99. </Span>
  100. <!-- don't highlight "@int" as keyword -->
  101. <Rule>
  102. @[\w\d_]+
  103. </Rule>
  104. <Keywords color="ThisOrBaseReference">
  105. <Word>this</Word>
  106. <Word>base</Word>
  107. </Keywords>
  108. <Keywords color="TypeKeywords">
  109. <Word>as</Word>
  110. <Word>is</Word>
  111. <Word>new</Word>
  112. <Word>sizeof</Word>
  113. <Word>typeof</Word>
  114. <Word>stackalloc</Word>
  115. </Keywords>
  116. <Keywords color="TrueFalse">
  117. <Word>true</Word>
  118. <Word>false</Word>
  119. </Keywords>
  120. <Keywords color="Keywords">
  121. <Word>else</Word>
  122. <Word>if</Word>
  123. <Word>switch</Word>
  124. <Word>case</Word>
  125. <Word>default</Word>
  126. <Word>do</Word>
  127. <Word>for</Word>
  128. <Word>foreach</Word>
  129. <Word>in</Word>
  130. <Word>while</Word>
  131. <Word>lock</Word>
  132. </Keywords>
  133. <Keywords color="GotoKeywords">
  134. <Word>break</Word>
  135. <Word>continue</Word>
  136. <Word>goto</Word>
  137. <Word>return</Word>
  138. </Keywords>
  139. <Keywords color="ContextKeywords">
  140. <Word>yield</Word>
  141. <Word>partial</Word>
  142. <Word>global</Word>
  143. <Word>where</Word>
  144. <Word>select</Word>
  145. <Word>group</Word>
  146. <Word>by</Word>
  147. <Word>into</Word>
  148. <Word>from</Word>
  149. <Word>ascending</Word>
  150. <Word>descending</Word>
  151. <Word>orderby</Word>
  152. <Word>let</Word>
  153. <Word>join</Word>
  154. <Word>on</Word>
  155. <Word>equals</Word>
  156. <Word>var</Word>
  157. <Word>dynamic</Word>
  158. <Word>await</Word>
  159. </Keywords>
  160. <Keywords color="ExceptionKeywords">
  161. <Word>try</Word>
  162. <Word>throw</Word>
  163. <Word>catch</Word>
  164. <Word>finally</Word>
  165. </Keywords>
  166. <Keywords color="CheckedKeyword">
  167. <Word>checked</Word>
  168. <Word>unchecked</Word>
  169. </Keywords>
  170. <Keywords color="UnsafeKeywords">
  171. <Word>fixed</Word>
  172. <Word>unsafe</Word>
  173. </Keywords>
  174. <Keywords color="ValueTypeKeywords">
  175. <Word>bool</Word>
  176. <Word>byte</Word>
  177. <Word>char</Word>
  178. <Word>decimal</Word>
  179. <Word>double</Word>
  180. <Word>enum</Word>
  181. <Word>float</Word>
  182. <Word>int</Word>
  183. <Word>long</Word>
  184. <Word>sbyte</Word>
  185. <Word>short</Word>
  186. <Word>struct</Word>
  187. <Word>uint</Word>
  188. <Word>ushort</Word>
  189. <Word>ulong</Word>
  190. </Keywords>
  191. <Keywords color="ReferenceTypeKeywords">
  192. <Word>class</Word>
  193. <Word>interface</Word>
  194. <Word>delegate</Word>
  195. <Word>object</Word>
  196. <Word>string</Word>
  197. <Word>void</Word>
  198. </Keywords>
  199. <Keywords color="OperatorKeywords">
  200. <Word>explicit</Word>
  201. <Word>implicit</Word>
  202. <Word>operator</Word>
  203. </Keywords>
  204. <Keywords color="ParameterModifiers">
  205. <Word>params</Word>
  206. <Word>ref</Word>
  207. <Word>out</Word>
  208. </Keywords>
  209. <Keywords color="Modifiers">
  210. <Word>abstract</Word>
  211. <Word>const</Word>
  212. <Word>event</Word>
  213. <Word>extern</Word>
  214. <Word>override</Word>
  215. <Word>readonly</Word>
  216. <Word>sealed</Word>
  217. <Word>static</Word>
  218. <Word>virtual</Word>
  219. <Word>volatile</Word>
  220. <Word>async</Word>
  221. </Keywords>
  222. <Keywords color="Visibility">
  223. <Word>public</Word>
  224. <Word>protected</Word>
  225. <Word>private</Word>
  226. <Word>internal</Word>
  227. </Keywords>
  228. <Keywords color="NamespaceKeywords">
  229. <Word>namespace</Word>
  230. <Word>using</Word>
  231. </Keywords>
  232. <Keywords color="GetSetAddRemove">
  233. <Word>get</Word>
  234. <Word>set</Word>
  235. <Word>add</Word>
  236. <Word>remove</Word>
  237. </Keywords>
  238. <Keywords color="NullOrValueKeywords">
  239. <Word>null</Word>
  240. <Word>value</Word>
  241. </Keywords>
  242. <!-- Mark previous rule-->
  243. <Rule color="MethodCall">
  244. \b
  245. [\d\w_]+ # an identifier
  246. (?=\s*\() # followed by (
  247. </Rule>
  248. <!-- Digits -->
  249. <Rule color="NumberLiteral">
  250. \b0[xX][0-9a-fA-F]+ # hex number
  251. |
  252. ( \b\d+(\.[0-9]+)? #number with optional floating point
  253. | \.[0-9]+ #or just starting with floating point
  254. )
  255. ([eE][+-]?[0-9]+)? # optional exponent
  256. </Rule>
  257. <Rule color="Punctuation">
  258. [?,.;()\[\]{}+\-/%*&lt;&gt;^+~!|&amp;]+
  259. </Rule>
  260. </RuleSet>
  261. </SyntaxDefinition>