@@ -1,5 +1,35 @@
11;; Methods
2−(method_declaration (identifier) @type (identifier) @function)
2+(method_declaration
3+ name: (identifier) @function)
4+
5+(method_declaration
6+ type: [(identifier) (qualified_name)] @type)
7+
8+(invocation_expression
9+ (member_access_expression
10+ name: (identifier) @function))
11+
12+(invocation_expression
13+ (member_access_expression
14+ expression: (identifier) @variable))
15+
16+(invocation_expression
17+ function: (conditional_access_expression
18+ (member_binding_expression
19+ name: (identifier) @function)))
20+
21+(invocation_expression
22+ [(identifier) (qualified_name)] @function)
23+
24+; Generic Method invocation with generic type
25+(invocation_expression
26+ function: (generic_name
27+ . (identifier) @function))
28+
29+;; Namespaces
30+
31+(namespace_declaration
32+ name: [(identifier) (qualified_name)] @namespace)
333
434;; Types
535(interface_declaration name: (identifier) @type)
@@ -8,8 +38,10 @@
838(struct_declaration (identifier) @type)
939(record_declaration (identifier) @type)
1040(namespace_declaration name: (identifier) @type)
11−
41+(using_directive (_) @namespace)
1242(constructor_declaration name: (identifier) @type)
43+(object_creation_expression [(identifier) (qualified_name)] @type)
44+(type_parameter_list (type_parameter) @type)
1345
1446[
1547 (implicit_type)
@@ -19,6 +51,31 @@
1951 (predefined_type)
2052] @type.builtin
2153
54+;; Generic Types
55+(type_of_expression
56+ (generic_name
57+ (identifier) @type))
58+
59+(base_list
60+ (generic_name
61+ (identifier) @type))
62+
63+(type_constraint
64+ (generic_name
65+ (identifier) @type))
66+
67+(object_creation_expression
68+ (generic_name
69+ (identifier) @type))
70+
71+(property_declaration
72+ (generic_name
73+ (identifier) @type))
74+
75+(_
76+ type: (generic_name
77+ (identifier) @type))
78+
2279;; Enum
2380(enum_member_declaration (identifier) @variable.other.member)
2481
@@ -66,24 +123,37 @@
66123 "++"
67124 "+="
68125 "<"
126+ "<="
69127 "<<"
128+ "<<="
70129 "="
71130 "=="
72131 "!"
73132 "!="
74133 "=>"
75134 ">"
135+ ">="
76136 ">>"
137+ ">>="
77138 "|"
78139 "||"
140+ "|="
79141 "?"
80142 "??"
81143 "^"
144+ "^="
82145 "~"
83146 "*"
147+ "*="
84148 "/"
149+ "/="
85150 "%"
151+ "%="
86152 ":"
153+ ".."
154+ "&="
155+ "->"
156+ "??="
87157] @operator
88158
89159[
@@ -131,6 +201,7 @@
131201 "return"
132202 "sizeof"
133203 "stackalloc"
204+ "static"
134205 "struct"
135206 "switch"
136207 "throw"
@@ -157,6 +228,8 @@
157228 "let"
158229] @keyword
159230
231+(preprocessor_call) @keyword.directive
232+(preprocessor_call (_) @keyword.directive)
160233
161234;; Linq
162235(from_clause (identifier) @variable)
@@ -172,13 +245,13 @@
172245 (identifier) @variable)))
173246
174247;; Exprs
175−(binary_expression (identifier) @variable (identifier) @variable)
176−(binary_expression (identifier)* @variable)
177−(conditional_expression (identifier) @variable)
178−(prefix_unary_expression (identifier) @variable)
179−(postfix_unary_expression (identifier)* @variable)
180−(assignment_expression (identifier) @variable)
181−(cast_expression (identifier) @type (identifier) @variable)
248+(binary_expression [(identifier) (qualified_name)] @variable [(identifier) (qualified_name)] @variable)
249+(binary_expression [(identifier) (qualified_name)]* @variable)
250+(conditional_expression [(identifier) (qualified_name)] @variable)
251+(prefix_unary_expression [(identifier) (qualified_name)] @variable)
252+(postfix_unary_expression [(identifier) (qualified_name)]* @variable)
253+(assignment_expression [(identifier) (qualified_name)] @variable)
254+(cast_expression [(identifier) (qualified_name)] @type [(identifier) (qualified_name)] @variable)
182255
183256;; Class
184257(base_list (identifier) @type)
@@ -192,6 +265,10 @@
192265(property_declaration
193266 type: (identifier) @type
194267 name: (identifier) @variable)
268+
269+;; Delegate
270+
271+(delegate_declaration (identifier) @type)
195272
196273;; Lambda
197274(lambda_expression) @variable
@@ -206,12 +283,20 @@
206283(parameter (identifier) @variable.parameter)
207284(parameter_modifier) @keyword
208285
286+(parameter_list
287+ (parameter
288+ name: (identifier) @parameter))
289+
290+(parameter_list
291+ (parameter
292+ type: [(identifier) (qualified_name)] @type))
293+
209294;; Typeof
210−(type_of_expression (identifier) @type)
295+(type_of_expression [(identifier) (qualified_name)] @type)
211296
212297;; Variable
213−(variable_declaration (identifier) @type)
214−(variable_declarator (identifier) @variable)
298+(variable_declaration [(identifier) (qualified_name)] @type)
299+(variable_declarator [(identifier) (qualified_name)] @variable)
215300
216301;; Return
217302(return_statement (identifier) @variable)
@@ -219,8 +304,8 @@
219304
220305;; Type
221306(generic_name (identifier) @type)
222−(type_parameter (identifier) @variable.parameter)
223−(type_argument_list (identifier) @type)
307+(type_parameter [(identifier) (qualified_name)] @variable.parameter)
308+(type_argument_list [(identifier) (qualified_name)] @type)
224309
225310;; Type constraints
226311(type_parameter_constraints_clause (identifier) @variable.parameter)
@@ -236,3 +321,16 @@
236321
237322;; Lock statement
238323(lock_statement (identifier) @variable)
324+
325+;; Rest
326+(member_access_expression) @variable
327+(element_access_expression (identifier) @variable)
328+(argument (identifier) @variable)
329+(for_statement (identifier) @variable)
330+(for_each_statement (identifier) @variable)
331+(expression_statement (identifier) @variable)
332+(member_access_expression expression: (identifier) @variable)
333+(member_access_expression name: (identifier) @variable)
334+(conditional_access_expression [(identifier) (qualified_name)] @variable)
335+((identifier) @comment.unused
336+ (#eq? @comment.unused "_"))