Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion extension.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ language = "CSharp"

[grammars.c_sharp]
repository = "https://github.com/tree-sitter/tree-sitter-c-sharp"
commit = "dd5e59721a5f8dae34604060833902b882023aaf"
commit = "485f0bae0274ac9114797fc10db6f7034e4086e3"
124 changes: 40 additions & 84 deletions languages/csharp/highlights.scm
Original file line number Diff line number Diff line change
@@ -1,30 +1,40 @@
(identifier) @variable

;; Methods

(method_declaration name: (identifier) @function)
(local_function_statement name: (identifier) @function)

;; Types

(interface_declaration name: (identifier) @type)
(class_declaration name: (identifier) @type)
(enum_declaration name: (identifier) @type)
(struct_declaration (identifier) @type)
(record_declaration (identifier) @type)
(record_struct_declaration (identifier) @type)
(namespace_declaration name: (identifier) @type)
(namespace_declaration name: (identifier) @module)

(generic_name (identifier) @type)
(type_parameter (identifier) @property.definition)
(parameter type: (identifier) @type)
(type_argument_list (identifier) @type)
(as_expression right: (identifier) @type)
(is_expression right: (identifier) @type)

(constructor_declaration name: (identifier) @constructor)
(destructor_declaration name: (identifier) @constructor)

[
(implicit_type)
(predefined_type)
] @type.builtin

(_ type: (identifier) @type)

(base_list (identifier) @type)

(predefined_type) @type.builtin

;; Enum
(enum_member_declaration (identifier) @property)
(enum_member_declaration (identifier) @property.definition)

;; Literals

[
(real_literal)
(integer_literal)
Expand All @@ -33,26 +43,26 @@
[
(character_literal)
(string_literal)
(verbatim_string_literal)
(interpolated_string_text)
(interpolated_verbatim_string_text)
(raw_string_literal)
"\""
"$\""
"@$\""
"$@\""
"\"\"\""
(verbatim_string_literal)
(interpolated_string_expression)
(interpolation_start)
(interpolation_quote)
] @string

(escape_sequence) @string.escape

[
(boolean_literal)
(null_literal)
] @constant
] @constant.builtin

;; Comments

(comment) @comment

;; Tokens

[
";"
"."
Expand Down Expand Up @@ -109,12 +119,16 @@
"]"
"{"
"}"
(interpolation_brace)
] @punctuation.bracket

;; Keywords
(modifier) @keyword
(this_expression) @keyword
(escape_sequence) @keyword

[
(modifier)
"this"
(implicit_type)
] @keyword

[
"add"
Expand Down Expand Up @@ -180,77 +194,19 @@
"let"
] @keyword


;; Linq
(from_clause (identifier) @variable)
(group_clause (identifier) @variable)
(order_by_clause (identifier) @variable)
(join_clause (identifier) @variable)
(select_clause (identifier) @variable)
(query_continuation (identifier) @variable) @keyword

;; Record
(with_expression
(with_initializer_expression
(simple_assignment_expression
(identifier) @variable)))

;; Exprs
(binary_expression (identifier) @variable (identifier) @variable)
(binary_expression (identifier)* @variable)
(conditional_expression (identifier) @variable)
(prefix_unary_expression (identifier) @variable)
(postfix_unary_expression (identifier)* @variable)
(assignment_expression (identifier) @variable)
(cast_expression (_) (identifier) @variable)

;; Class
(base_list (identifier) @type) ;; applies to record_base too
(property_declaration (generic_name))
(property_declaration
name: (identifier) @variable)
(property_declaration
name: (identifier) @variable)
(property_declaration
name: (identifier) @variable)

;; Lambda
(lambda_expression) @variable

;; Attribute
(attribute) @attribute

;; Parameter
(parameter
name: (identifier) @variable)
(parameter (identifier) @variable)
(parameter_modifier) @keyword
(attribute name: (identifier) @attribute)

;; Variable declarations
(variable_declarator (identifier) @variable)
(for_each_statement left: (identifier) @variable)
(catch_declaration (_) (identifier) @variable)
;; Parameters

;; Return
(return_statement (identifier) @variable)
(yield_statement (identifier) @variable)

;; Type
(generic_name (identifier) @type)
(type_parameter (identifier) @property)
(type_argument_list (identifier) @type)
(as_expression right: (identifier) @type)
(is_expression right: (identifier) @type)
(parameter
name: (identifier) @variable.parameter)

;; Type constraints
(type_parameter_constraints_clause (identifier) @property)

;; Switch
(switch_statement (identifier) @variable)
(switch_expression (identifier) @variable)

;; Lock statement
(lock_statement (identifier) @variable)
(type_parameter_constraints_clause (identifier) @property.definition)

;; Method calls

(invocation_expression (member_access_expression name: (identifier) @function))