on master help sign in
Improve C# syntax highlighting (#4118)
commit8e8ba06f60e02c44915da633eb8e51b1eb097478 authorChickenkeeper <chrism.chickenkeeper24@gmail.com> dateMon 10 Oct 2022, 18:07 (4 years ago) parentd27551d
2 files changed+87−58
languages.toml+1−1 runtime/queries/c-sharp/highlights.scm+86−57
languages.toml+1−1
@@ -235,7 +235,7 @@ language-server = { command = "OmniSharp", args = [ "--languageserver" ] }
235235
236236[[grammar]]
237237name = "c-sharp"
238−source = { git = "https://github.com/tree-sitter/tree-sitter-c-sharp", rev = "9c494a503c8e2044bfffce57f70b480c01a82f03" }
238+source = { git = "https://github.com/tree-sitter/tree-sitter-c-sharp", rev = "5b60f99545fea00a33bbfae5be956f684c4c69e2" }
239239
240240[[language]]
241241name = "go"
runtime/queries/c-sharp/highlights.scm+86−57
@@ -9,25 +9,23 @@
99 (member_access_expression
1010 name: (identifier) @function))
1111
12−(invocation_expression
13− (member_access_expression
14− expression: (identifier) @variable))
15−
1612(invocation_expression
1713 function: (conditional_access_expression
1814 (member_binding_expression
1915 name: (identifier) @function)))
2016
2117(invocation_expression
22− [(identifier) (qualified_name)] @function)
18+ [(identifier) (qualified_name)] @function)
19+
20+(local_function_statement
21+ name: (identifier) @function)
2322
2423; Generic Method invocation with generic type
2524(invocation_expression
2625 function: (generic_name
27− . (identifier) @function))
26+ . (identifier) @function))
2827
2928;; Namespaces
30−
3129(namespace_declaration
3230 name: [(identifier) (qualified_name)] @namespace)
3331
@@ -40,8 +38,11 @@
4038(namespace_declaration name: (identifier) @type)
4139(using_directive (_) @namespace)
4240(constructor_declaration name: (identifier) @type)
41+(destructor_declaration name: (identifier) @type)
4342(object_creation_expression [(identifier) (qualified_name)] @type)
4443(type_parameter_list (type_parameter) @type)
44+(array_type (identifier) @type)
45+(for_each_statement type: (identifier) @type)
4546
4647[
4748 (implicit_type)
@@ -66,7 +67,7 @@
6667
6768(object_creation_expression
6869 (generic_name
69− (identifier) @type))
70+ (identifier) @type))
7071
7172(property_declaration
7273 (generic_name
@@ -74,7 +75,7 @@
7475
7576(_
7677 type: (generic_name
77− (identifier) @type))
78+ (identifier) @type))
7879
7980;; Enum
8081(enum_member_declaration (identifier) @variable.other.member)
@@ -91,6 +92,7 @@
9192 (verbatim_string_literal)
9293 (interpolated_string_text)
9394 (interpolated_verbatim_string_text)
95+ (interpolation_format_clause)
9496 "\""
9597 "$\""
9698 "@$\""
@@ -150,6 +152,7 @@
150152 "%"
151153 "%="
152154 ":"
155+ "::"
153156 ".."
154157 "&="
155158 "->"
@@ -166,50 +169,27 @@
166169] @punctuation.bracket
167170
168171;; Keywords
169−(modifier) @keyword
172+(modifier) @keyword.storage.modifier
170173(this_expression) @keyword
171174(escape_sequence) @constant.character.escape
172175
173176[
174177 "as"
175178 "base"
176− "break"
177− "case"
178179 "catch"
179180 "checked"
180− "class"
181− "continue"
182− "default"
183− "delegate"
184− "do"
185− "else"
186− "enum"
187− "event"
188− "explicit"
189181 "finally"
190− "for"
191− "foreach"
192− "goto"
193− "if"
194− "implicit"
195− "interface"
196182 "is"
197183 "lock"
198− "namespace"
199184 "operator"
200185 "params"
201− "return"
202186 "sizeof"
203187 "stackalloc"
204− "static"
205− "struct"
206− "switch"
207188 "throw"
208189 "try"
209190 "typeof"
210191 "unchecked"
211192 "using"
212− "while"
213193 "new"
214194 "await"
215195 "in"
@@ -222,25 +202,63 @@
222202 "from"
223203 "where"
224204 "select"
225− "record"
226205 "init"
227206 "with"
228207 "let"
229208] @keyword
230209
231−(nullable_directive) @keyword.directive
232−(define_directive) @keyword.directive
233−(undef_directive) @keyword.directive
234−(if_directive) @keyword.directive
235−(else_directive) @keyword.directive
236−(elif_directive) @keyword.directive
237−(endif_directive) @keyword.directive
238−(region_directive) @keyword.directive
239−(endregion_directive) @keyword.directive
240−(error_directive) @keyword.directive
241−(warning_directive) @keyword.directive
242−(line_directive) @keyword.directive
243−(pragma_directive) @keyword.directive
210+[
211+ "class"
212+ "delegate"
213+ "enum"
214+ "event"
215+ "interface"
216+ "namespace"
217+ "struct"
218+ "record"
219+] @keyword.storage.type
220+
221+[
222+ "explicit"
223+ "implicit"
224+ "static"
225+] @keyword.storage.modifier
226+
227+[
228+ "for"
229+ "foreach"
230+ "do"
231+ "while"
232+ "break"
233+ "continue"
234+] @keyword.control.repeat
235+
236+[
237+ "goto"
238+ "if"
239+ "else"
240+ "switch"
241+ "case"
242+ "default"
243+] @keyword.control.conditional
244+
245+"return" @keyword.control.return
246+
247+[
248+ (nullable_directive)
249+ (define_directive)
250+ (undef_directive)
251+ (if_directive)
252+ (else_directive)
253+ (elif_directive)
254+ (endif_directive)
255+ (region_directive)
256+ (endregion_directive)
257+ (error_directive)
258+ (warning_directive)
259+ (line_directive)
260+ (pragma_directive)
261+] @keyword.directive
244262
245263;; Linq
246264(from_clause (identifier) @variable)
@@ -259,10 +277,16 @@
259277(binary_expression [(identifier) (qualified_name)] @variable [(identifier) (qualified_name)] @variable)
260278(binary_expression [(identifier) (qualified_name)]* @variable)
261279(conditional_expression [(identifier) (qualified_name)] @variable)
280+(conditional_access_expression [(identifier) (qualified_name)] @variable)
262281(prefix_unary_expression [(identifier) (qualified_name)] @variable)
263282(postfix_unary_expression [(identifier) (qualified_name)]* @variable)
264283(assignment_expression [(identifier) (qualified_name)] @variable)
265284(cast_expression [(identifier) (qualified_name)] @type [(identifier) (qualified_name)] @variable)
285+(element_access_expression (identifier) @variable)
286+(member_access_expression
287+ expression: ([(identifier) (qualified_name)] @type
288+ (#match? @type "^[A-Z]")))
289+(member_access_expression [(identifier) (qualified_name)] @variable)
266290
267291;; Class
268292(base_list (identifier) @type)
@@ -278,7 +302,6 @@
278302 name: (identifier) @variable)
279303
280304;; Delegate
281−
282305(delegate_declaration (identifier) @type)
283306
284307;; Lambda
@@ -296,11 +319,11 @@
296319
297320(parameter_list
298321 (parameter
299− name: (identifier) @parameter))
322+ name: (identifier) @parameter))
300323
301324(parameter_list
302325 (parameter
303− type: [(identifier) (qualified_name)] @type))
326+ type: [(identifier) (qualified_name)] @type))
304327
305328;; Typeof
306329(type_of_expression [(identifier) (qualified_name)] @type)
@@ -315,7 +338,7 @@
315338
316339;; Type
317340(generic_name (identifier) @type)
318−(type_parameter [(identifier) (qualified_name)] @variable.parameter)
341+(type_parameter [(identifier) (qualified_name)] @type)
319342(type_argument_list [(identifier) (qualified_name)] @type)
320343
321344;; Type constraints
@@ -333,15 +356,21 @@
333356;; Lock statement
334357(lock_statement (identifier) @variable)
335358
359+;; Declaration expression
360+(declaration_expression
361+ type: (identifier) @type
362+ name: (identifier) @variable)
363+
336364;; Rest
337−(member_access_expression) @variable
338−(element_access_expression (identifier) @variable)
339365(argument (identifier) @variable)
366+(name_colon (identifier) @variable)
367+(if_statement (identifier) @variable)
340368(for_statement (identifier) @variable)
341369(for_each_statement (identifier) @variable)
342370(expression_statement (identifier) @variable)
343−(member_access_expression expression: (identifier) @variable)
344−(member_access_expression name: (identifier) @variable)
345−(conditional_access_expression [(identifier) (qualified_name)] @variable)
371+(array_rank_specifier (identifier) @variable)
372+(equals_value_clause (identifier) @variable)
373+(interpolation (identifier) @variable)
374+(cast_expression (identifier) @variable)
346375((identifier) @comment.unused
347− (#eq? @comment.unused "_"))
376+ (#eq? @comment.unused "_"))