diff --git a/crates/languages/src/bash/brackets.scm b/crates/languages/src/bash/brackets.scm index 88a2a1b67f6..aba1fa2b357 100644 --- a/crates/languages/src/bash/brackets.scm +++ b/crates/languages/src/bash/brackets.scm @@ -1,12 +1,62 @@ -("(" @open ")" @close) -("[" @open "]" @close) -("{" @open "}" @close) -(("\"" @open "\"" @close) (#set! rainbow.exclude)) -(("`" @open "`" @close) (#set! rainbow.exclude)) -(("do" @open "done" @close) (#set! newline.only) (#set! rainbow.exclude)) -((case_statement ("in" @open "esac" @close)) (#set! newline.only) (#set! rainbow.exclude)) -((if_statement (elif_clause ("then" @open)) (else_clause ("else" @close))) (#set! newline.only) (#set! rainbow.exclude)) -((if_statement (else_clause ("else" @open)) "fi" @close) (#set! newline.only) (#set! rainbow.exclude)) -((if_statement ("then" @open) (elif_clause ("elif" @close))) (#set! newline.only) (#set! rainbow.exclude)) -((if_statement ("then" @open) (else_clause ("else" @close))) (#set! newline.only) (#set! rainbow.exclude)) -((if_statement ("then" @open "fi" @close)) (#set! newline.only) (#set! rainbow.exclude)) +("(" @open + ")" @close) + +("[" @open + "]" @close) + +("{" @open + "}" @close) + +(("\"" @open + "\"" @close) + (#set! rainbow.exclude)) + +(("`" @open + "`" @close) + (#set! rainbow.exclude)) + +(("do" @open + "done" @close) + (#set! newline.only) + (#set! rainbow.exclude)) + +((case_statement + ("in" @open + "esac" @close)) + (#set! newline.only) + (#set! rainbow.exclude)) + +((if_statement + (elif_clause + "then" @open) + (else_clause + "else" @close)) + (#set! newline.only) + (#set! rainbow.exclude)) + +((if_statement + (else_clause + "else" @open) + "fi" @close) + (#set! newline.only) + (#set! rainbow.exclude)) + +((if_statement + "then" @open + (elif_clause + "elif" @close)) + (#set! newline.only) + (#set! rainbow.exclude)) + +((if_statement + "then" @open + (else_clause + "else" @close)) + (#set! newline.only) + (#set! rainbow.exclude)) + +((if_statement + ("then" @open + "fi" @close)) + (#set! newline.only) + (#set! rainbow.exclude)) diff --git a/crates/languages/src/bash/highlights.scm b/crates/languages/src/bash/highlights.scm index 4a8d7eaf345..bc1c3b7ec11 100644 --- a/crates/languages/src/bash/highlights.scm +++ b/crates/languages/src/bash/highlights.scm @@ -43,13 +43,17 @@ (comment) @keyword.directive) (#match? @keyword.directive "^#![ \t]*/")) -(function_definition name: (word) @function) -(command_name (word) @function) +(function_definition + name: (word) @function) + +(command_name + (word) @function) (command argument: [ (word) @variable.parameter - (_ (word) @variable.parameter) + (_ + (word) @variable.parameter) ]) [ @@ -65,7 +69,6 @@ (expansion) ] @embedded - [ "$" "&&" @@ -89,9 +92,7 @@ (test_operator) @keyword.operator -[ - ";" -] @punctuation.delimiter +";" @punctuation.delimiter [ "(" @@ -104,6 +105,7 @@ (simple_expansion "$" @punctuation.special) + (expansion "${" @punctuation.special "}" @punctuation.special) @embedded @@ -112,10 +114,11 @@ "$(" @punctuation.special ")" @punctuation.special) -( - (command (_) @constant) - (#match? @constant "^-") -) +((command + (_) @constant) + (#match? @constant "^-")) + +(case_item + value: (_) @string.regex) -(case_item value: (_) @string.regex) (special_variable_name) @variable.special diff --git a/crates/languages/src/bash/indents.scm b/crates/languages/src/bash/indents.scm index 468fc595e56..25a0dc20fd7 100644 --- a/crates/languages/src/bash/indents.scm +++ b/crates/languages/src/bash/indents.scm @@ -1,12 +1,27 @@ -(_ "[" "]" @end) @indent -(_ "{" "}" @end) @indent -(_ "(" ")" @end) @indent +(_ + "[" + "]" @end) @indent + +(_ + "{" + "}" @end) @indent + +(_ + "(" + ")" @end) @indent (function_definition) @start.function + (if_statement) @start.if + (elif_clause) @start.elif + (else_clause) @start.else + (for_statement) @start.for + (while_statement) @start.while + (case_statement) @start.case + (case_item) @start.case_item diff --git a/crates/languages/src/bash/injections.scm b/crates/languages/src/bash/injections.scm index 9117c713b98..2f0e58eb643 100644 --- a/crates/languages/src/bash/injections.scm +++ b/crates/languages/src/bash/injections.scm @@ -1,3 +1,2 @@ ((comment) @injection.content - (#set! injection.language "comment") -) + (#set! injection.language "comment")) diff --git a/crates/languages/src/bash/overrides.scm b/crates/languages/src/bash/overrides.scm index 81fec9a5f57..544e9876f8e 100644 --- a/crates/languages/src/bash/overrides.scm +++ b/crates/languages/src/bash/overrides.scm @@ -1,2 +1,3 @@ (comment) @comment.inclusive + (string) @string diff --git a/crates/languages/src/bash/redactions.scm b/crates/languages/src/bash/redactions.scm index 000cb042a57..5c2c83aa666 100644 --- a/crates/languages/src/bash/redactions.scm +++ b/crates/languages/src/bash/redactions.scm @@ -1,2 +1,2 @@ (variable_assignment - value: (_) @redact) + value: (_) @redact) diff --git a/crates/languages/src/bash/runnables.scm b/crates/languages/src/bash/runnables.scm index c88e549347b..3856495422d 100644 --- a/crates/languages/src/bash/runnables.scm +++ b/crates/languages/src/bash/runnables.scm @@ -1,5 +1,5 @@ ; Run bash scripts -( - (program . (_) @run) @_bash-script - (#set! tag bash-script) -) +((program + . + (_) @run) @_bash-script + (#set! tag bash-script)) diff --git a/crates/languages/src/bash/textobjects.scm b/crates/languages/src/bash/textobjects.scm index cca2f7d9e9e..9a5e4853ee7 100644 --- a/crates/languages/src/bash/textobjects.scm +++ b/crates/languages/src/bash/textobjects.scm @@ -2,6 +2,6 @@ body: (_ "{" (_)* @function.inside - "}" )) @function.around + "}")) @function.around (comment) @comment.around diff --git a/crates/languages/src/c/brackets.scm b/crates/languages/src/c/brackets.scm index 2149bddc6c9..313d212a5eb 100644 --- a/crates/languages/src/c/brackets.scm +++ b/crates/languages/src/c/brackets.scm @@ -1,5 +1,16 @@ -("(" @open ")" @close) -("[" @open "]" @close) -("{" @open "}" @close) -(("\"" @open "\"" @close) (#set! rainbow.exclude)) -(("'" @open "'" @close) (#set! rainbow.exclude)) +("(" @open + ")" @close) + +("[" @open + "]" @close) + +("{" @open + "}" @close) + +(("\"" @open + "\"" @close) + (#set! rainbow.exclude)) + +(("'" @open + "'" @close) + (#set! rainbow.exclude)) diff --git a/crates/languages/src/c/highlights.scm b/crates/languages/src/c/highlights.scm index e426bd4f904..dc5a3bd9993 100644 --- a/crates/languages/src/c/highlights.scm +++ b/crates/languages/src/c/highlights.scm @@ -116,19 +116,23 @@ (identifier) @variable ((identifier) @constant - (#match? @constant "^_*[A-Z][A-Z\\d_]*$")) + (#match? @constant "^_*[A-Z][A-Z\\d_]*$")) (call_expression function: (identifier) @function) + (call_expression function: (field_expression field: (field_identifier) @function)) + (function_declarator declarator: (identifier) @function) + (preproc_function_def name: (identifier) @function.special) (field_identifier) @property + (statement_identifier) @label [ @@ -139,6 +143,7 @@ ; GNU __attribute__ (attribute_specifier) @attribute + (attribute_specifier (argument_list (identifier) @attribute)) @@ -146,5 +151,6 @@ ; C23 [[attributes]] (attribute prefix: (identifier) @attribute) + (attribute name: (identifier) @attribute) diff --git a/crates/languages/src/c/imports.scm b/crates/languages/src/c/imports.scm index c3c2c9e68c4..2aaab2106f5 100644 --- a/crates/languages/src/c/imports.scm +++ b/crates/languages/src/c/imports.scm @@ -1,7 +1,7 @@ (preproc_include - path: [ - ( - (system_lib_string) @source @wildcard - (#strip! @source "[<>]")) - (string_literal (string_content) @source @wildcard) - ]) @import + path: [ + ((system_lib_string) @source @wildcard + (#strip! @source "[<>]")) + (string_literal + (string_content) @source @wildcard) + ]) @import diff --git a/crates/languages/src/c/indents.scm b/crates/languages/src/c/indents.scm index b6d3c3c3bf7..0b55631e5ca 100644 --- a/crates/languages/src/c/indents.scm +++ b/crates/languages/src/c/indents.scm @@ -9,15 +9,25 @@ (else_clause) ] @indent -(_ "{" "}" @end) @indent -(_ "(" ")" @end) @indent +(_ + "{" + "}" @end) @indent + +(_ + "(" + ")" @end) @indent ((comment) @indent - (#match? @indent "^/\\*")) + (#match? @indent "^/\\*")) (if_statement) @start.if + (for_statement) @start.for + (while_statement) @start.while + (do_statement) @start.do + (switch_statement) @start.switch + (else_clause) @start.else diff --git a/crates/languages/src/c/injections.scm b/crates/languages/src/c/injections.scm index 9ec3cf1f780..010c697f08a 100644 --- a/crates/languages/src/c/injections.scm +++ b/crates/languages/src/c/injections.scm @@ -1,6 +1,5 @@ ((comment) @injection.content - (#set! injection.language "comment") -) + (#set! injection.language "comment")) ((comment) @injection.content (#match? @injection.content "^(///|//!|/\\*\\*|/\\*!)(.*)") @@ -8,9 +7,9 @@ (#set! injection.include-children)) (preproc_def - value: (preproc_arg) @injection.content - (#set! injection.language "c")) + value: (preproc_arg) @injection.content + (#set! injection.language "c")) (preproc_function_def - value: (preproc_arg) @injection.content - (#set! injection.language "c")) + value: (preproc_arg) @injection.content + (#set! injection.language "c")) diff --git a/crates/languages/src/c/outline.scm b/crates/languages/src/c/outline.scm index efd911836cb..abc96083438 100644 --- a/crates/languages/src/c/outline.scm +++ b/crates/languages/src/c/outline.scm @@ -1,91 +1,89 @@ (preproc_def - "#define" @context - name: (_) @name) @item + "#define" @context + name: (_) @name) @item (preproc_function_def - "#define" @context - name: (_) @name - parameters: (preproc_params - "(" @context - ")" @context)) @item + "#define" @context + name: (_) @name + parameters: (preproc_params + "(" @context + ")" @context)) @item (struct_specifier - "struct" @context - name: (_) @name) @item + "struct" @context + name: (_) @name) @item (union_specifier - "union" @context - name: (_) @name) @item + "union" @context + name: (_) @name) @item (enum_specifier - "enum" @context - name: (_) @name) @item + "enum" @context + name: (_) @name) @item (enumerator - name: (_) @name) @item + name: (_) @name) @item (field_declaration - type: (_) @context - declarator: (field_identifier) @name) @item + type: (_) @context + declarator: (field_identifier) @name) @item (type_definition - "typedef" @context - declarator: (_) @name) @item + "typedef" @context + declarator: (_) @name) @item (declaration - (type_qualifier)? @context - type: (_)? @context - declarator: [ - (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context)) - (pointer_declarator - "*" @context - declarator: (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context))) - (pointer_declarator - "*" @context - declarator: (pointer_declarator - "*" @context - declarator: (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context)))) - ] -) @item + (type_qualifier)? @context + type: (_)? @context + declarator: [ + (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context)) + (pointer_declarator + "*" @context + declarator: (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context))) + (pointer_declarator + "*" @context + declarator: (pointer_declarator + "*" @context + declarator: (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context)))) + ]) @item (function_definition - (type_qualifier)? @context - type: (_)? @context - declarator: [ - (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context)) - (pointer_declarator - "*" @context - declarator: (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context))) - (pointer_declarator - "*" @context - declarator: (pointer_declarator - "*" @context - declarator: (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context)))) - ] -) @item + (type_qualifier)? @context + type: (_)? @context + declarator: [ + (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context)) + (pointer_declarator + "*" @context + declarator: (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context))) + (pointer_declarator + "*" @context + declarator: (pointer_declarator + "*" @context + declarator: (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context)))) + ]) @item (comment) @annotation diff --git a/crates/languages/src/c/overrides.scm b/crates/languages/src/c/overrides.scm index 36473eb300f..7c4cf696972 100644 --- a/crates/languages/src/c/overrides.scm +++ b/crates/languages/src/c/overrides.scm @@ -1,2 +1,3 @@ (comment) @comment.inclusive + (string_literal) @string diff --git a/crates/languages/src/c/runnables.scm b/crates/languages/src/c/runnables.scm index 5a203f5d7a6..50c5ef5b71b 100644 --- a/crates/languages/src/c/runnables.scm +++ b/crates/languages/src/c/runnables.scm @@ -1,10 +1,6 @@ ; Tag the main function -( - (function_definition - declarator: (function_declarator - declarator: (identifier) @run - ) - ) @_c-main +((function_definition + declarator: (function_declarator + declarator: (identifier) @run)) @_c-main (#eq? @run "main") - (#set! tag c-main) -) + (#set! tag c-main)) diff --git a/crates/languages/src/c/textobjects.scm b/crates/languages/src/c/textobjects.scm index e29f508b701..fd5ec0b49b7 100644 --- a/crates/languages/src/c/textobjects.scm +++ b/crates/languages/src/c/textobjects.scm @@ -1,31 +1,34 @@ (declaration - declarator: (function_declarator)) @function.around + declarator: (function_declarator)) @function.around (function_definition - body: (_ - "{" - (_)* @function.inside - "}" )) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (preproc_function_def - value: (_) @function.inside) @function.around + value: (_) @function.inside) @function.around (comment) @comment.around (struct_specifier - body: (_ - "{" - (_)* @class.inside - "}")) @class.around + body: (_ + "{" + (_)* @class.inside + "}")) @class.around (enum_specifier - body: (_ - "{" - [(_) ","?]* @class.inside - "}")) @class.around + body: (_ + "{" + [ + (_) + ","? + ]* @class.inside + "}")) @class.around (union_specifier - body: (_ - "{" - (_)* @class.inside - "}")) @class.around + body: (_ + "{" + (_)* @class.inside + "}")) @class.around diff --git a/crates/languages/src/cpp/brackets.scm b/crates/languages/src/cpp/brackets.scm index 9eaebba3328..e0330c9b1f2 100644 --- a/crates/languages/src/cpp/brackets.scm +++ b/crates/languages/src/cpp/brackets.scm @@ -1,6 +1,19 @@ -("(" @open ")" @close) -("[" @open "]" @close) -("{" @open "}" @close) -("<" @open ">" @close) -(("\"" @open "\"" @close) (#set! rainbow.exclude)) -(("'" @open "'" @close) (#set! rainbow.exclude)) +("(" @open + ")" @close) + +("[" @open + "]" @close) + +("{" @open + "}" @close) + +("<" @open + ">" @close) + +(("\"" @open + "\"" @close) + (#set! rainbow.exclude)) + +(("'" @open + "'" @close) + (#set! rainbow.exclude)) diff --git a/crates/languages/src/cpp/highlights.scm b/crates/languages/src/cpp/highlights.scm index dbb79e69b04..e074707d05d 100644 --- a/crates/languages/src/cpp/highlights.scm +++ b/crates/languages/src/cpp/highlights.scm @@ -1,13 +1,15 @@ (identifier) @variable + (field_identifier) @property + (namespace_identifier) @namespace (concept_definition - name: (identifier) @concept) + name: (identifier) @concept) (requires_clause - constraint: (template_type - name: (type_identifier) @concept)) + constraint: (template_type + name: (type_identifier) @concept)) (module_name (identifier) @module) @@ -83,18 +85,23 @@ (operator_name "<=>" @operator.spaceship) -(destructor_name (identifier) @function) +(destructor_name + (identifier) @function) ((namespace_identifier) @type - (#match? @type "^[A-Z]")) + (#match? @type "^[A-Z]")) (auto) @type + (type_identifier) @type + type: (primitive_type) @type.builtin + (sized_type_specifier) @type.builtin ; GNU __attribute__ (attribute_specifier) @attribute + (attribute_specifier (argument_list (identifier) @attribute)) @@ -102,15 +109,18 @@ type: (primitive_type) @type.builtin ; C++11 [[attributes]] (attribute prefix: (identifier) @attribute) + (attribute name: (identifier) @attribute) ((identifier) @constant.builtin - (#match? @constant.builtin "^_*[A-Z][A-Z\\d_]*$")) + (#match? @constant.builtin "^_*[A-Z][A-Z\\d_]*$")) (statement_identifier) @label + (this) @variable.builtin -("static_assert") @function.builtin + +"static_assert" @function.builtin [ "alignas" @@ -197,7 +207,7 @@ type: (primitive_type) @type.builtin [ (null) - ("nullptr") + "nullptr" ] @constant.builtin (number_literal) @number @@ -285,5 +295,8 @@ type: (primitive_type) @type.builtin (binary_expression operator: "<=>" @operator.spaceship) -(conditional_expression ":" @operator) -(user_defined_literal (literal_suffix) @operator) +(conditional_expression + ":" @operator) + +(user_defined_literal + (literal_suffix) @operator) diff --git a/crates/languages/src/cpp/imports.scm b/crates/languages/src/cpp/imports.scm index a4ef817a80d..43adde711b5 100644 --- a/crates/languages/src/cpp/imports.scm +++ b/crates/languages/src/cpp/imports.scm @@ -1,5 +1,6 @@ (preproc_include - path: [ - ((system_lib_string) @source @wildcard) - (string_literal (string_content) @source @wildcard) - ]) @import + path: [ + (system_lib_string) @source @wildcard + (string_literal + (string_content) @source @wildcard) + ]) @import diff --git a/crates/languages/src/cpp/indents.scm b/crates/languages/src/cpp/indents.scm index 985ebda6ffe..0b55631e5ca 100644 --- a/crates/languages/src/cpp/indents.scm +++ b/crates/languages/src/cpp/indents.scm @@ -1,23 +1,33 @@ [ - (field_expression) - (assignment_expression) - (init_declarator) - (if_statement) - (for_statement) - (while_statement) - (do_statement) - (else_clause) + (field_expression) + (assignment_expression) + (init_declarator) + (if_statement) + (for_statement) + (while_statement) + (do_statement) + (else_clause) ] @indent -(_ "{" "}" @end) @indent -(_ "(" ")" @end) @indent +(_ + "{" + "}" @end) @indent + +(_ + "(" + ")" @end) @indent ((comment) @indent - (#match? @indent "^/\\*")) + (#match? @indent "^/\\*")) (if_statement) @start.if + (for_statement) @start.for + (while_statement) @start.while + (do_statement) @start.do + (switch_statement) @start.switch + (else_clause) @start.else diff --git a/crates/languages/src/cpp/injections.scm b/crates/languages/src/cpp/injections.scm index 60c6ea7b63e..0f622d4edba 100644 --- a/crates/languages/src/cpp/injections.scm +++ b/crates/languages/src/cpp/injections.scm @@ -1,6 +1,5 @@ ((comment) @injection.content - (#set! injection.language "comment") -) + (#set! injection.language "comment")) ((comment) @injection.content (#match? @injection.content "^(///|//!|/\\*\\*|/\\*!)(.*)") @@ -8,12 +7,12 @@ (#set! injection.include-children)) (preproc_def - value: (preproc_arg) @injection.content - (#set! injection.language "c++")) + value: (preproc_arg) @injection.content + (#set! injection.language "c++")) (preproc_function_def - value: (preproc_arg) @injection.content - (#set! injection.language "c++")) + value: (preproc_arg) @injection.content + (#set! injection.language "c++")) (raw_string_literal delimiter: (raw_string_delimiter) @injection.language diff --git a/crates/languages/src/cpp/outline.scm b/crates/languages/src/cpp/outline.scm index 75be97a916d..041ff7d1b02 100644 --- a/crates/languages/src/cpp/outline.scm +++ b/crates/languages/src/cpp/outline.scm @@ -1,186 +1,195 @@ (preproc_def - "#define" @context - name: (_) @name) @item + "#define" @context + name: (_) @name) @item (preproc_function_def - "#define" @context - name: (_) @name - parameters: (preproc_params - "(" @context - ")" @context)) @item + "#define" @context + name: (_) @name + parameters: (preproc_params + "(" @context + ")" @context)) @item (namespace_definition - "inline"? @context - "namespace" @context - name: (_) @name) @item + "inline"? @context + "namespace" @context + name: (_) @name) @item (type_definition - "typedef" @context - declarator: (_) @name) @item + "typedef" @context + declarator: (_) @name) @item (struct_specifier - "struct" @context - name: (_) @name) @item + "struct" @context + name: (_) @name) @item (class_specifier - "class" @context - name: (_) @name) @item + "class" @context + name: (_) @name) @item (enum_specifier - "enum" @context - [ - "class" - "struct" - ]? @context - name: (_) @name) @item + "enum" @context + [ + "class" + "struct" + ]? @context + name: (_) @name) @item (union_specifier - "union" @context - name: (_) @name) @item + "union" @context + name: (_) @name) @item (enumerator - name: (_) @name) @item + name: (_) @name) @item (concept_definition - "concept" @context - name: (_) @name) @item + "concept" @context + name: (_) @name) @item (declaration - [ - (storage_class_specifier) - (type_qualifier) - ]* @context - type: (_) @context - declarator: [ - ; The declaration may define multiple variables, using @item on the - ; declarator so that they get distinct ranges. - (init_declarator - declarator: (_) @item @name) - (identifier) @item @name - ] @item) + [ + (storage_class_specifier) + (type_qualifier) + ]* @context + type: (_) @context + declarator: [ + ; The declaration may define multiple variables, using @item on the + ; declarator so that they get distinct ranges. + (init_declarator + declarator: (_) @item @name) + (identifier) @item @name + ] @item) (function_definition - [ - (storage_class_specifier) - (type_qualifier) - ]* @context - type: (_)? @context - declarator: [ - (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context)) - (pointer_declarator - "*" @context - declarator: (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context))) - (pointer_declarator - "*" @context - declarator: (pointer_declarator - "*" @context - declarator: (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context)))) - (reference_declarator - ["&" "&&"] @context - (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context))) - ] - (type_qualifier)? @context) @item + [ + (storage_class_specifier) + (type_qualifier) + ]* @context + type: (_)? @context + declarator: [ + (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context)) + (pointer_declarator + "*" @context + declarator: (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context))) + (pointer_declarator + "*" @context + declarator: (pointer_declarator + "*" @context + declarator: (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context)))) + (reference_declarator + [ + "&" + "&&" + ] @context + (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context))) + ] + (type_qualifier)? @context) @item (declaration - [ - (storage_class_specifier) - (type_qualifier) - ]* @context - type: (_)? @context - declarator: [ - (field_identifier) @name - (pointer_declarator - "*" @context - declarator: (field_identifier) @name) - (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context)) - (pointer_declarator - "*" @context - declarator: (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context))) - (pointer_declarator - "*" @context - declarator: (pointer_declarator - "*" @context - declarator: (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context)))) - (reference_declarator - ["&" "&&"] @context - (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context))) - ] - (type_qualifier)? @context) @item + [ + (storage_class_specifier) + (type_qualifier) + ]* @context + type: (_)? @context + declarator: [ + (field_identifier) @name + (pointer_declarator + "*" @context + declarator: (field_identifier) @name) + (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context)) + (pointer_declarator + "*" @context + declarator: (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context))) + (pointer_declarator + "*" @context + declarator: (pointer_declarator + "*" @context + declarator: (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context)))) + (reference_declarator + [ + "&" + "&&" + ] @context + (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context))) + ] + (type_qualifier)? @context) @item (field_declaration - [ - (storage_class_specifier) - (type_qualifier) - ]* @context - type: (_) @context - declarator: [ - (field_identifier) @name - (pointer_declarator - "*" @context - declarator: (field_identifier) @name) - (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context)) - (pointer_declarator - "*" @context - declarator: (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context))) - (pointer_declarator - "*" @context - declarator: (pointer_declarator - "*" @context - declarator: (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context)))) - (reference_declarator - ["&" "&&"] @context - (function_declarator - declarator: (_) @name - parameters: (parameter_list - "(" @context - ")" @context))) + [ + (storage_class_specifier) + (type_qualifier) + ]* @context + type: (_) @context + declarator: [ + (field_identifier) @name + (pointer_declarator + "*" @context + declarator: (field_identifier) @name) + (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context)) + (pointer_declarator + "*" @context + declarator: (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context))) + (pointer_declarator + "*" @context + declarator: (pointer_declarator + "*" @context + declarator: (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context)))) + (reference_declarator + [ + "&" + "&&" + ] @context + (function_declarator + declarator: (_) @name + parameters: (parameter_list + "(" @context + ")" @context))) ; Fields declarations may define multiple fields, and so @item is on the ; declarator so they each get distinct ranges. - ] @item - (type_qualifier)? @context) + ] @item + (type_qualifier)? @context) (comment) @annotation diff --git a/crates/languages/src/cpp/overrides.scm b/crates/languages/src/cpp/overrides.scm index 36473eb300f..7c4cf696972 100644 --- a/crates/languages/src/cpp/overrides.scm +++ b/crates/languages/src/cpp/overrides.scm @@ -1,2 +1,3 @@ (comment) @comment.inclusive + (string_literal) @string diff --git a/crates/languages/src/cpp/textobjects.scm b/crates/languages/src/cpp/textobjects.scm index 027185a0cfa..61260cd8146 100644 --- a/crates/languages/src/cpp/textobjects.scm +++ b/crates/languages/src/cpp/textobjects.scm @@ -1,37 +1,44 @@ (declaration - declarator: (function_declarator)) @function.around + declarator: (function_declarator)) @function.around (function_definition - body: (_ - "{" - (_)* @function.inside - "}" )) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (preproc_function_def - value: (_) @function.inside) @function.around + value: (_) @function.inside) @function.around (comment) @comment.around (struct_specifier - body: (_ - "{" - (_)* @class.inside - "}")) @class.around + body: (_ + "{" + (_)* @class.inside + "}")) @class.around (enum_specifier - body: (_ - "{" - [(_) ","?]* @class.inside - "}")) @class.around + body: (_ + "{" + [ + (_) + ","? + ]* @class.inside + "}")) @class.around (union_specifier - body: (_ - "{" - (_)* @class.inside - "}")) @class.around + body: (_ + "{" + (_)* @class.inside + "}")) @class.around (class_specifier body: (_ - "{" - [(_) ":"? ";"?]* @class.inside - "}"?)) @class.around + "{" + [ + (_) + ":"? + ";"? + ]* @class.inside + "}"?)) @class.around diff --git a/crates/languages/src/css/brackets.scm b/crates/languages/src/css/brackets.scm index 2149bddc6c9..313d212a5eb 100644 --- a/crates/languages/src/css/brackets.scm +++ b/crates/languages/src/css/brackets.scm @@ -1,5 +1,16 @@ -("(" @open ")" @close) -("[" @open "]" @close) -("{" @open "}" @close) -(("\"" @open "\"" @close) (#set! rainbow.exclude)) -(("'" @open "'" @close) (#set! rainbow.exclude)) +("(" @open + ")" @close) + +("[" @open + "]" @close) + +("{" @open + "}" @close) + +(("\"" @open + "\"" @close) + (#set! rainbow.exclude)) + +(("'" @open + "'" @close) + (#set! rainbow.exclude)) diff --git a/crates/languages/src/css/highlights.scm b/crates/languages/src/css/highlights.scm index 8fbb9f47d2b..b9d708b661b 100644 --- a/crates/languages/src/css/highlights.scm +++ b/crates/languages/src/css/highlights.scm @@ -30,14 +30,24 @@ ] @keyword.operator (id_name) @selector.id + (class_name) @selector.class (namespace_name) @namespace -(namespace_selector (tag_name) @namespace "|") + +(namespace_selector + (tag_name) @namespace + "|") (attribute_name) @attribute -(pseudo_element_selector "::" (tag_name) @selector.pseudo) -(pseudo_class_selector ":" (class_name) @selector.pseudo) + +(pseudo_element_selector + "::" + (tag_name) @selector.pseudo) + +(pseudo_class_selector + ":" + (class_name) @selector.pseudo) [ (feature_name) @@ -58,13 +68,11 @@ (parenthesized_query (keyword_query) @property) -( - [ - (property_name) - (plain_value) - ] @variable - (#match? @variable "^--") -) +([ + (property_name) + (plain_value) +] @variable + (#match? @variable "^--")) [ "@media" @@ -80,6 +88,7 @@ ] @keyword (string_value) @string + (color_value) @string.special [ @@ -97,7 +106,8 @@ ";" ] @punctuation.delimiter -(id_selector "#" @punctuation.delimiter) +(id_selector + "#" @punctuation.delimiter) [ "{" diff --git a/crates/languages/src/css/indents.scm b/crates/languages/src/css/indents.scm index e9754690920..a768bb04079 100644 --- a/crates/languages/src/css/indents.scm +++ b/crates/languages/src/css/indents.scm @@ -1 +1,3 @@ -(_ "{" "}" @end) @indent +(_ + "{" + "}" @end) @indent diff --git a/crates/languages/src/css/injections.scm b/crates/languages/src/css/injections.scm index 9117c713b98..2f0e58eb643 100644 --- a/crates/languages/src/css/injections.scm +++ b/crates/languages/src/css/injections.scm @@ -1,3 +1,2 @@ ((comment) @injection.content - (#set! injection.language "comment") -) + (#set! injection.language "comment")) diff --git a/crates/languages/src/css/outline.scm b/crates/languages/src/css/outline.scm index 645616f9056..6e6e9d3a03c 100644 --- a/crates/languages/src/css/outline.scm +++ b/crates/languages/src/css/outline.scm @@ -1,18 +1,16 @@ (stylesheet - (import_statement - "@import" @context - ((string_value) @name)) @item) - + (import_statement + "@import" @context + (string_value) @name) @item) (rule_set - (selectors - . - (_) @name - ("," @name (_) @name)* - )) @item + (selectors + . + (_) @name + ("," @name + (_) @name)*)) @item (media_statement - "@media" @context - (_) @name - (block) -) @item + "@media" @context + (_) @name + (block)) @item diff --git a/crates/languages/src/css/overrides.scm b/crates/languages/src/css/overrides.scm index e5eade47972..7ca202fd7bc 100644 --- a/crates/languages/src/css/overrides.scm +++ b/crates/languages/src/css/overrides.scm @@ -1,2 +1,3 @@ (comment) @comment.inclusive + (string_value) @string diff --git a/crates/languages/src/css/textobjects.scm b/crates/languages/src/css/textobjects.scm index c9c6207b851..88ae6bb8423 100644 --- a/crates/languages/src/css/textobjects.scm +++ b/crates/languages/src/css/textobjects.scm @@ -1,30 +1,31 @@ (comment) @comment.around (rule_set - (block ( - "{" - (_)* @function.inside - "}" ))) @function.around + (block + ("{" + (_)* @function.inside + "}"))) @function.around + (keyframe_block - (block ( - "{" - (_)* @function.inside - "}" ))) @function.around + (block + ("{" + (_)* @function.inside + "}"))) @function.around (media_statement - (block ( - "{" - (_)* @class.inside - "}" ))) @class.around + (block + ("{" + (_)* @class.inside + "}"))) @class.around (supports_statement - (block ( - "{" - (_)* @class.inside - "}" ))) @class.around + (block + ("{" + (_)* @class.inside + "}"))) @class.around (keyframes_statement - (keyframe_block_list ( - "{" - (_)* @class.inside - "}" ))) @class.around + (keyframe_block_list + ("{" + (_)* @class.inside + "}"))) @class.around diff --git a/crates/languages/src/diff/highlights.scm b/crates/languages/src/diff/highlights.scm index 4a344389032..a2e33190f15 100644 --- a/crates/languages/src/diff/highlights.scm +++ b/crates/languages/src/diff/highlights.scm @@ -4,14 +4,14 @@ (addition) (new_file) ] @string -;; TODO: This should eventually be `@diff.plus` with a fallback of `@string` +; TODO: This should eventually be `@diff.plus` with a fallback of `@string` [ (deletion) (old_file) ] @keyword -;; TODO: This should eventually be `@diff.minus` with a fallback of `@keyword` +; TODO: This should eventually be `@diff.minus` with a fallback of `@keyword` (commit) @constant (location) @attribute @@ -22,7 +22,7 @@ (mode) @number -([ +[ ".." "+" "++" @@ -32,7 +32,7 @@ "--" "---" "----" -] @punctuation.special) +] @punctuation.special [ (binary_change) diff --git a/crates/languages/src/diff/injections.scm b/crates/languages/src/diff/injections.scm index 01e833d1e31..2f0e58eb643 100644 --- a/crates/languages/src/diff/injections.scm +++ b/crates/languages/src/diff/injections.scm @@ -1,2 +1,2 @@ ((comment) @injection.content - (#set! injection.language "comment")) + (#set! injection.language "comment")) diff --git a/crates/languages/src/gitcommit/highlights.scm b/crates/languages/src/gitcommit/highlights.scm index 8670a6615aa..750a400f2b1 100644 --- a/crates/languages/src/gitcommit/highlights.scm +++ b/crates/languages/src/gitcommit/highlights.scm @@ -1,18 +1,36 @@ (subject) @markup.heading + (path) @string.special.path + (branch) @string.special.symbol + (commit) @constant + (item) @markup.link.url + (header) @tag + (comment) @comment -(change kind: "new file" @diff.plus) -(change kind: "deleted" @diff.minus) -(change kind: "modified" @diff.delta) -(change kind: "renamed" @diff.delta.moved) +(change + kind: "new file" @diff.plus) + +(change + kind: "deleted" @diff.minus) + +(change + kind: "modified" @diff.delta) + +(change + kind: "renamed" @diff.delta.moved) (trailer key: (trailer_key) @variable.other.member value: (trailer_value) @string) -[":" "=" "->" (scissors)] @punctuation.delimiter +[ + ":" + "=" + "->" + (scissors) +] @punctuation.delimiter diff --git a/crates/languages/src/gitcommit/injections.scm b/crates/languages/src/gitcommit/injections.scm index 8fb9b459679..07c2dd95ca6 100644 --- a/crates/languages/src/gitcommit/injections.scm +++ b/crates/languages/src/gitcommit/injections.scm @@ -1,9 +1,8 @@ ((comment) @content - (#set! injection.language "comment") -) + (#set! injection.language "comment")) ((scissors) @content - (#set! "language" "diff")) + (#set! "language" "diff")) ((rebase_command) @content - (#set! "language" "git_rebase")) + (#set! "language" "git_rebase")) diff --git a/crates/languages/src/go/brackets.scm b/crates/languages/src/go/brackets.scm index 05fb1d7f921..6bee4099173 100644 --- a/crates/languages/src/go/brackets.scm +++ b/crates/languages/src/go/brackets.scm @@ -1,6 +1,19 @@ -("(" @open ")" @close) -("[" @open "]" @close) -("{" @open "}" @close) -(("\"" @open "\"" @close) (#set! rainbow.exclude)) -(("`" @open "`" @close) (#set! rainbow.exclude)) -((rune_literal) @open @close (#set! rainbow.exclude)) +("(" @open + ")" @close) + +("[" @open + "]" @close) + +("{" @open + "}" @close) + +(("\"" @open + "\"" @close) + (#set! rainbow.exclude)) + +(("`" @open + "`" @close) + (#set! rainbow.exclude)) + +((rune_literal) @open @close + (#set! rainbow.exclude)) diff --git a/crates/languages/src/go/debugger.scm b/crates/languages/src/go/debugger.scm index f22b91f938e..306b0448a7d 100644 --- a/crates/languages/src/go/debugger.scm +++ b/crates/languages/src/go/debugger.scm @@ -1,26 +1,44 @@ -(parameter_declaration (identifier) @debug-variable) +(parameter_declaration + (identifier) @debug-variable) -(short_var_declaration (expression_list (identifier) @debug-variable)) +(short_var_declaration + (expression_list + (identifier) @debug-variable)) -(var_declaration (var_spec (identifier) @debug-variable)) +(var_declaration + (var_spec + (identifier) @debug-variable)) -(const_declaration (const_spec (identifier) @debug-variable)) +(const_declaration + (const_spec + (identifier) @debug-variable)) -(assignment_statement (expression_list (identifier) @debug-variable)) +(assignment_statement + (expression_list + (identifier) @debug-variable)) -(binary_expression (identifier) @debug-variable +(binary_expression + (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) -(call_expression (argument_list (identifier) @debug-variable - (#not-match? @debug-variable "^[A-Z]"))) +(call_expression + (argument_list + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]"))) -(return_statement (expression_list (identifier) @debug-variable - (#not-match? @debug-variable "^[A-Z]"))) +(return_statement + (expression_list + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]"))) -(range_clause (expression_list (identifier) @debug-variable)) +(range_clause + (expression_list + (identifier) @debug-variable)) -(parenthesized_expression (identifier) @debug-variable +(parenthesized_expression + (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) (block) @debug-scope + (function_declaration) @debug-scope diff --git a/crates/languages/src/go/highlights.scm b/crates/languages/src/go/highlights.scm index 15a512d6b7e..670b4f05a96 100644 --- a/crates/languages/src/go/highlights.scm +++ b/crates/languages/src/go/highlights.scm @@ -1,10 +1,12 @@ (identifier) @variable (type_identifier) @type + (type_spec name: (type_identifier) @type.definition) (field_identifier) @property + (package_identifier) @namespace (label_name) @label @@ -26,6 +28,7 @@ (method_declaration name: (field_identifier) @function.method) + (method_elem name: (field_identifier) @function.method) @@ -144,8 +147,7 @@ ; Go directives ((comment) @preproc - (#match? @preproc "^//go:")) + (#match? @preproc "^//go:")) ((comment) @preproc - (#match? @preproc "^// \\+build")) - + (#match? @preproc "^// \\+build")) diff --git a/crates/languages/src/go/imports.scm b/crates/languages/src/go/imports.scm index 7f0ff2d46e6..23e480c10b2 100644 --- a/crates/languages/src/go/imports.scm +++ b/crates/languages/src/go/imports.scm @@ -1,14 +1,12 @@ (import_spec - name: [ - (dot) - (package_identifier) - ] - path: (interpreted_string_literal - (interpreted_string_literal_content) @namespace) -) @wildcard @import + name: [ + (dot) + (package_identifier) + ] + path: (interpreted_string_literal + (interpreted_string_literal_content) @namespace)) @wildcard @import (import_spec - !name - path: (interpreted_string_literal - (interpreted_string_literal_content) @namespace) -) @wildcard @import + !name + path: (interpreted_string_literal + (interpreted_string_literal_content) @namespace)) @wildcard @import diff --git a/crates/languages/src/go/indents.scm b/crates/languages/src/go/indents.scm index abbb72eb379..21e8cf7abbc 100644 --- a/crates/languages/src/go/indents.scm +++ b/crates/languages/src/go/indents.scm @@ -1,9 +1,17 @@ [ - (assignment_statement) - (call_expression) - (selector_expression) + (assignment_statement) + (call_expression) + (selector_expression) ] @indent -(_ "[" "]" @end) @indent -(_ "{" "}" @end) @indent -(_ "(" ")" @end) @indent +(_ + "[" + "]" @end) @indent + +(_ + "{" + "}" @end) @indent + +(_ + "(" + ")" @end) @indent diff --git a/crates/languages/src/go/injections.scm b/crates/languages/src/go/injections.scm index 58583f4d22c..73cf0bd352d 100644 --- a/crates/languages/src/go/injections.scm +++ b/crates/languages/src/go/injections.scm @@ -1,7 +1,6 @@ ; Refer to https://github.com/nvim-treesitter/nvim-treesitter/blob/master/queries/go/injections.scm#L4C1-L16C41 ((comment) @injection.content - (#set! injection.language "comment") -) + (#set! injection.language "comment")) (call_expression (selector_expression) @_function @@ -14,722 +13,718 @@ (raw_string_literal) (interpreted_string_literal) ] @injection.content - (#set! injection.language "regex") - )) + (#set! injection.language "regex"))) ; INJECT SQL -( - [ - (const_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (var_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (assignment_statement - left: (expression_list) - "=" +([ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (composite_literal + body: (literal_value + (keyed_element (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (short_var_declaration - left: (expression_list) - ":=" + value: (literal_element + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])))) + (expression_statement + (call_expression + (argument_list (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (composite_literal - body: (literal_value - (keyed_element - (comment) @_comment - value: (literal_element - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )))) - - (expression_statement - (call_expression - (argument_list - (comment) @_comment - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - ))) - ] + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ]))) +] (#match? @_comment "^\\/\\*\\s*sql\\s*\\*\\/$") - (#set! injection.language "sql") -) + (#set! injection.language "sql")) ; INJECT JSON -( - [ - (const_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (var_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (assignment_statement - left: (expression_list) - "=" +([ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (composite_literal + body: (literal_value + (keyed_element (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (short_var_declaration - left: (expression_list) - ":=" + value: (literal_element + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])))) + (expression_statement + (call_expression + (argument_list (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (composite_literal - body: (literal_value - (keyed_element - (comment) @_comment - value: (literal_element - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )))) - - (expression_statement - (call_expression - (argument_list - (comment) @_comment - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - ))) - ] - (#match? @_comment "^\\/\\*\\s*json\\s*\\*\\/") ; /* json */ or /*json*/ - (#set! injection.language "json") -) + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ]))) +] + (#match? @_comment "^\\/\\*\\s*json\\s*\\*\\/") + ; /* json */ or /*json*/ + (#set! injection.language "json")) ; INJECT YAML -( - [ - (const_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (var_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (assignment_statement - left: (expression_list) - "=" +([ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (composite_literal + body: (literal_value + (keyed_element (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (short_var_declaration - left: (expression_list) - ":=" + value: (literal_element + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])))) + (expression_statement + (call_expression + (argument_list (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (composite_literal - body: (literal_value - (keyed_element - (comment) @_comment - value: (literal_element - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )))) - - (expression_statement - (call_expression - (argument_list - (comment) @_comment - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - ))) - ] - (#match? @_comment "^\\/\\*\\s*yaml\\s*\\*\\/") ; /* yaml */ or /*yaml*/ - (#set! injection.language "yaml") -) + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ]))) +] + (#match? @_comment "^\\/\\*\\s*yaml\\s*\\*\\/") + ; /* yaml */ or /*yaml*/ + (#set! injection.language "yaml")) ; INJECT XML -( - [ - (const_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (var_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (assignment_statement - left: (expression_list) - "=" +([ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (composite_literal + body: (literal_value + (keyed_element (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (short_var_declaration - left: (expression_list) - ":=" + value: (literal_element + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])))) + (expression_statement + (call_expression + (argument_list (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (composite_literal - body: (literal_value - (keyed_element - (comment) @_comment - value: (literal_element - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )))) - - (expression_statement - (call_expression - (argument_list - (comment) @_comment - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - ))) - ] - (#match? @_comment "^\\/\\*\\s*xml\\s*\\*\\/") ; /* xml */ or /*xml*/ - (#set! injection.language "xml") -) + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ]))) +] + (#match? @_comment "^\\/\\*\\s*xml\\s*\\*\\/") + ; /* xml */ or /*xml*/ + (#set! injection.language "xml")) ; INJECT HTML -( - [ - (const_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (var_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (assignment_statement - left: (expression_list) - "=" +([ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (composite_literal + body: (literal_value + (keyed_element (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (short_var_declaration - left: (expression_list) - ":=" + value: (literal_element + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])))) + (expression_statement + (call_expression + (argument_list (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (composite_literal - body: (literal_value - (keyed_element - (comment) @_comment - value: (literal_element - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )))) - - (expression_statement - (call_expression - (argument_list - (comment) @_comment - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - ))) - ] - (#match? @_comment "^\\/\\*\\s*html\\s*\\*\\/") ; /* html */ or /*html*/ - (#set! injection.language "html") -) + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ]))) +] + (#match? @_comment "^\\/\\*\\s*html\\s*\\*\\/") + ; /* html */ or /*html*/ + (#set! injection.language "html")) ; INJECT JS -( - [ - (const_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (var_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (assignment_statement - left: (expression_list) - "=" +([ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (composite_literal + body: (literal_value + (keyed_element (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (short_var_declaration - left: (expression_list) - ":=" + value: (literal_element + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])))) + (expression_statement + (call_expression + (argument_list (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (composite_literal - body: (literal_value - (keyed_element - (comment) @_comment - value: (literal_element - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )))) - - (expression_statement - (call_expression - (argument_list - (comment) @_comment - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - ))) - ] - (#match? @_comment "^\\/\\*\\s*js\\s*\\*\\/") ; /* js */ or /*js*/ - (#set! injection.language "javascript") -) - + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ]))) +] + (#match? @_comment "^\\/\\*\\s*js\\s*\\*\\/") + ; /* js */ or /*js*/ + (#set! injection.language "javascript")) ; INJECT CSS -( - [ - (const_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (var_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (assignment_statement - left: (expression_list) - "=" +([ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (composite_literal + body: (literal_value + (keyed_element (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (short_var_declaration - left: (expression_list) - ":=" + value: (literal_element + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])))) + (expression_statement + (call_expression + (argument_list (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (composite_literal - body: (literal_value - (keyed_element - (comment) @_comment - value: (literal_element - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )))) - - (expression_statement - (call_expression - (argument_list - (comment) @_comment - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - ))) - ] - (#match? @_comment "^\\/\\*\\s*css\\s*\\*\\/") ; /* css */ or /*css*/ - (#set! injection.language "css") -) - + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ]))) +] + (#match? @_comment "^\\/\\*\\s*css\\s*\\*\\/") + ; /* css */ or /*css*/ + (#set! injection.language "css")) ; INJECT LUA -( - [ - (const_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (var_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (assignment_statement - left: (expression_list) - "=" +([ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (composite_literal + body: (literal_value + (keyed_element (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (short_var_declaration - left: (expression_list) - ":=" + value: (literal_element + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])))) + (expression_statement + (call_expression + (argument_list (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (composite_literal - body: (literal_value - (keyed_element - (comment) @_comment - value: (literal_element - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )))) - - (expression_statement - (call_expression - (argument_list - (comment) @_comment - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - ))) - ] - (#match? @_comment "^\\/\\*\\s*lua\\s*\\*\\/") ; /* lua */ or /*lua*/ - (#set! injection.language "lua") -) + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ]))) +] + (#match? @_comment "^\\/\\*\\s*lua\\s*\\*\\/") + ; /* lua */ or /*lua*/ + (#set! injection.language "lua")) ; INJECT BASH -( - [ - (const_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (var_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (assignment_statement - left: (expression_list) - "=" +([ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (composite_literal + body: (literal_value + (keyed_element (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (short_var_declaration - left: (expression_list) - ":=" + value: (literal_element + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])))) + (expression_statement + (call_expression + (argument_list (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (composite_literal - body: (literal_value - (keyed_element - (comment) @_comment - value: (literal_element - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )))) - - (expression_statement - (call_expression - (argument_list - (comment) @_comment - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - ))) - ] - (#match? @_comment "^\\/\\*\\s*bash\\s*\\*\\/") ; /* bash */ or /*bash*/ - (#set! injection.language "bash") -) + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ]))) +] + (#match? @_comment "^\\/\\*\\s*bash\\s*\\*\\/") + ; /* bash */ or /*bash*/ + (#set! injection.language "bash")) ; INJECT CSV -( +([ + (const_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (var_spec + name: (identifier) + "=" + (comment) @_comment + value: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (assignment_statement + left: (expression_list) + "=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (short_var_declaration + left: (expression_list) + ":=" + (comment) @_comment + right: (expression_list + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + ((comment) @_comment + value: (literal_element + [ + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ])) + (argument_list + (comment) @_comment [ - (const_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (var_spec - name: (identifier) - "=" - (comment) @_comment - value: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (assignment_statement - left: (expression_list) - "=" - (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (short_var_declaration - left: (expression_list) - ":=" - (comment) @_comment - right: (expression_list - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - ((comment) @_comment - value: (literal_element - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - )) - - (argument_list - (comment) @_comment - [ - (interpreted_string_literal (interpreted_string_literal_content) @injection.content) - (raw_string_literal (raw_string_literal_content) @injection.content) - ] - ) - ] - (#match? @_comment "^\\/\\*\\s*csv\\s*\\*\\/") ; /* csv */ or /*csv */ - (#set! injection.language "csv") -) + (interpreted_string_literal + (interpreted_string_literal_content) @injection.content) + (raw_string_literal + (raw_string_literal_content) @injection.content) + ]) +] + (#match? @_comment "^\\/\\*\\s*csv\\s*\\*\\/") + ; /* csv */ or /*csv */ + (#set! injection.language "csv")) diff --git a/crates/languages/src/go/outline.scm b/crates/languages/src/go/outline.scm index c745f55aff7..da42904fab9 100644 --- a/crates/languages/src/go/outline.scm +++ b/crates/languages/src/go/outline.scm @@ -1,67 +1,61 @@ (comment) @annotation (type_declaration - "type" @context - [ - (type_spec - name: (_) @name) @item - ( - "(" - (type_spec - name: (_) @name) @item - ")" - ) - ] -) + "type" @context + [ + (type_spec + name: (_) @name) @item + ("(" + (type_spec + name: (_) @name) @item + ")") + ]) (function_declaration - "func" @context - name: (identifier) @name - parameters: (parameter_list - "(" - ")")) @item + "func" @context + name: (identifier) @name + parameters: (parameter_list + "(" + ")")) @item (method_declaration - "func" @context - receiver: (parameter_list - "(" @context - (parameter_declaration - name: (_) @context - type: (_) @context) - ")" @context) - name: (field_identifier) @name - parameters: (parameter_list - "(" - ")")) @item + "func" @context + receiver: (parameter_list + "(" @context + (parameter_declaration + name: (_) @context + type: (_) @context) + ")" @context) + name: (field_identifier) @name + parameters: (parameter_list + "(" + ")")) @item (const_declaration - "const" @context - (const_spec - name: (identifier) @name) @item) + "const" @context + (const_spec + name: (identifier) @name) @item) (source_file - (var_declaration - "var" @context - [ - ; The declaration may define multiple variables, and so @item is on - ; the identifier so they get distinct ranges. - (var_spec - name: (identifier) @name @item) - (var_spec_list - (var_spec - name: (identifier) @name @item) - ) - ] - ) -) + (var_declaration + "var" @context + [ + ; The declaration may define multiple variables, and so @item is on + ; the identifier so they get distinct ranges. + (var_spec + name: (identifier) @name @item) + (var_spec_list + (var_spec + name: (identifier) @name @item)) + ])) (method_elem - name: (_) @name - parameters: (parameter_list - "(" @context - ")" @context)) @item + name: (_) @name + parameters: (parameter_list + "(" @context + ")" @context)) @item ; Fields declarations may define multiple fields, and so @item is on the ; declarator so they each get distinct ranges. (field_declaration - name: (_) @name @item) + name: (_) @name @item) diff --git a/crates/languages/src/go/overrides.scm b/crates/languages/src/go/overrides.scm index aae1520301b..7989c4271f0 100644 --- a/crates/languages/src/go/overrides.scm +++ b/crates/languages/src/go/overrides.scm @@ -1,4 +1,5 @@ (comment) @comment.inclusive + [ (interpreted_string_literal) (raw_string_literal) diff --git a/crates/languages/src/go/runnables.scm b/crates/languages/src/go/runnables.scm index 786a923566d..d00be6e1d0d 100644 --- a/crates/languages/src/go/runnables.scm +++ b/crates/languages/src/go/runnables.scm @@ -1,170 +1,118 @@ ; Functions names start with `Test` -( - ( - (function_declaration name: (_) @run - (#match? @run "^Test.*") - (#not-match? @run "^TestMain$")) - ) @_ - (#set! tag go-test) -) +(((function_declaration + name: (_) @run + (#match? @run "^Test.*") + (#not-match? @run "^TestMain$"))) @_ + (#set! tag go-test)) ; Suite test methods (testify/suite) -( - (method_declaration - receiver: (parameter_list - (parameter_declaration - type: [ - (pointer_type (type_identifier) @_suite_name) - (type_identifier) @_suite_name - ] - ) - ) - name: (field_identifier) @run @_subtest_name - (#match? @_subtest_name "^Test.*") - (#match? @_suite_name ".*Suite") - ) @_ - (#set! tag go-testify-suite) -) +((method_declaration + receiver: (parameter_list + (parameter_declaration + type: [ + (pointer_type + (type_identifier) @_suite_name) + (type_identifier) @_suite_name + ])) + name: (field_identifier) @run @_subtest_name + (#match? @_subtest_name "^Test.*") + (#match? @_suite_name ".*Suite")) @_ + (#set! tag go-testify-suite)) ; `go:generate` comments -( - ((comment) @_comment @run - (#match? @_comment "^//go:generate")) - (#set! tag go-generate) -) +(((comment) @_comment @run + (#match? @_comment "^//go:generate")) + (#set! tag go-generate)) ; `t.Run` -( - ( - (call_expression - function: ( - selector_expression - field: _ @run @_name - (#eq? @_name "Run") - ) - arguments: ( - argument_list - . - [ - (interpreted_string_literal) - (raw_string_literal) - ] @_subtest_name - . - (func_literal - parameters: ( - parameter_list - (parameter_declaration - name: (identifier) @_param_name - type: (pointer_type - (qualified_type - package: (package_identifier) @_pkg - name: (type_identifier) @_type - (#eq? @_pkg "testing") - (#eq? @_type "T") - ) - ) - ) - ) - ) @_second_argument - ) - ) - ) @_ - (#set! tag go-subtest) -) +(((call_expression + function: (selector_expression + field: _ @run @_name + (#eq? @_name "Run")) + arguments: (argument_list + . + [ + (interpreted_string_literal) + (raw_string_literal) + ] @_subtest_name + . + (func_literal + parameters: (parameter_list + (parameter_declaration + name: (identifier) @_param_name + type: (pointer_type + (qualified_type + package: (package_identifier) @_pkg + name: (type_identifier) @_type + (#eq? @_pkg "testing") + (#eq? @_type "T")))))) @_second_argument))) @_ + (#set! tag go-subtest)) ; Functions names start with `Example` -( - ( - (function_declaration name: (_) @run @_name - (#match? @_name "^Example.*")) - ) @_ - (#set! tag go-example) -) +(((function_declaration + name: (_) @run @_name + (#match? @_name "^Example.*"))) @_ + (#set! tag go-example)) ; Functions names start with `Benchmark` -( - ( - (function_declaration name: (_) @run @_name - (#match? @_name "^Benchmark.*")) - ) @_ - (#set! tag go-benchmark) -) +(((function_declaration + name: (_) @run @_name + (#match? @_name "^Benchmark.*"))) @_ + (#set! tag go-benchmark)) ; Functions names start with `Fuzz` -( - ( - (function_declaration name: (_) @run @_name - (#match? @_name "^Fuzz")) - ) @_ - (#set! tag go-fuzz) -) +(((function_declaration + name: (_) @run @_name + (#match? @_name "^Fuzz"))) @_ + (#set! tag go-fuzz)) ; go run -( - ( - (function_declaration name: (_) @run - (#eq? @run "main")) - ) @_ - (#set! tag go-main) -) +(((function_declaration + name: (_) @run + (#eq? @run "main"))) @_ + (#set! tag go-main)) ; Table test cases - slice and map with explicit variable -( - (short_var_declaration - left: (expression_list (identifier) @_collection_var) - right: (expression_list - (composite_literal - type: [ - (slice_type) - (map_type - key: (type_identifier) @_key_type - (#eq? @_key_type "string") - ) - ] - body: (literal_value - [ +((short_var_declaration + left: (expression_list + (identifier) @_collection_var) + right: (expression_list + (composite_literal + type: [ + (slice_type) + (map_type + key: (type_identifier) @_key_type + (#eq? @_key_type "string")) + ] + body: (literal_value + [ + (literal_element + (literal_value + (keyed_element + (literal_element + (identifier) @_field_name) + (literal_element + [ + (interpreted_string_literal) @run @_table_test_case_name + (raw_string_literal) @run @_table_test_case_name + ])))) + (keyed_element (literal_element - (literal_value - (keyed_element - (literal_element - (identifier) @_field_name - ) - (literal_element - [ - (interpreted_string_literal) @run @_table_test_case_name - (raw_string_literal) @run @_table_test_case_name - ] - ) - ) - ) - ) - (keyed_element - (literal_element - [ - (interpreted_string_literal) @run @_table_test_case_name - (raw_string_literal) @run @_table_test_case_name - ] - ) - ) - ] - ) - ) - ) - ) + [ + (interpreted_string_literal) @run @_table_test_case_name + (raw_string_literal) @run @_table_test_case_name + ])) + ])))) (for_statement (range_clause left: (expression_list [ - ( - (identifier) - (identifier) @_loop_var_inner - ) + ((identifier) + (identifier) @_loop_var_inner) (identifier) @_loop_var_outer - ] - ) + ]) right: (identifier) @_range_var - (#eq? @_range_var @_collection_var) - ) + (#eq? @_range_var @_collection_var)) body: (block (statement_list (expression_statement @@ -172,8 +120,7 @@ function: (selector_expression operand: (identifier) field: (field_identifier) @_run_method - (#eq? @_run_method "Run") - ) + (#eq? @_run_method "Run")) arguments: (argument_list . [ @@ -181,8 +128,7 @@ operand: (identifier) @_tc_var (#eq? @_tc_var @_loop_var_inner) field: (field_identifier) @_field_check - (#eq? @_field_check @_field_name) - ) + (#eq? @_field_check @_field_name)) (identifier) @_arg_var (#eq? @_arg_var @_loop_var_outer) ] @@ -195,113 +141,72 @@ package: (package_identifier) @_pkg name: (type_identifier) @_type (#eq? @_pkg "testing") - (#eq? @_type "T") - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) @_ - (#set! tag go-table-test-case) -) + (#eq? @_type "T")))))))))))) @_ + (#set! tag go-table-test-case)) ; Table test cases - slice and map declared right inside the loop without ; explicit variable -( - (for_statement - (range_clause - left: (expression_list +((for_statement + (range_clause + left: (expression_list + [ + ((identifier) + (identifier) @_loop_var_inner) + (identifier) @_loop_var_outer + ]) + right: (composite_literal + type: [ + (slice_type) + (map_type + key: (type_identifier) @_key_type + (#eq? @_key_type "string")) + ] + body: (literal_value [ - ( - (identifier) - (identifier) @_loop_var_inner - ) - (identifier) @_loop_var_outer - ] - ) - right: (composite_literal - type: [ - (slice_type) - (map_type - key: (type_identifier) @_key_type - (#eq? @_key_type "string") - ) - ] - body: (literal_value - [ + (literal_element + (literal_value + (keyed_element + (literal_element + (identifier) @_field_name) + (literal_element + [ + (interpreted_string_literal) @run @_table_test_case_name + (raw_string_literal) @run @_table_test_case_name + ])))) + (keyed_element (literal_element - (literal_value - (keyed_element - (literal_element - (identifier) @_field_name - ) - (literal_element - [ - (interpreted_string_literal) @run @_table_test_case_name - (raw_string_literal) @run @_table_test_case_name - ] - ) - ) - ) - ) - (keyed_element - (literal_element - [ - (interpreted_string_literal) @run @_table_test_case_name - (raw_string_literal) @run @_table_test_case_name - ] - ) - ) - ] - ) - ) - ) - body: (block - (statement_list - (expression_statement - (call_expression - function: (selector_expression - operand: (identifier) - field: (field_identifier) @_run_method - (#eq? @_run_method "Run") - ) - arguments: (argument_list - . [ - (selector_expression - operand: (identifier) @_tc_var - (#eq? @_tc_var @_loop_var_inner) - field: (field_identifier) @_field_check - (#eq? @_field_check @_field_name) - ) - (identifier) @_arg_var - (#eq? @_arg_var @_loop_var_outer) - ] - . - (func_literal - parameters: (parameter_list - (parameter_declaration - type: (pointer_type - (qualified_type - package: (package_identifier) @_pkg - name: (type_identifier) @_type - (#eq? @_pkg "testing") - (#eq? @_type "T") - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) @_ - (#set! tag go-table-test-case-without-explicit-variable) -) + (interpreted_string_literal) @run @_table_test_case_name + (raw_string_literal) @run @_table_test_case_name + ])) + ]))) + body: (block + (statement_list + (expression_statement + (call_expression + function: (selector_expression + operand: (identifier) + field: (field_identifier) @_run_method + (#eq? @_run_method "Run")) + arguments: (argument_list + . + [ + (selector_expression + operand: (identifier) @_tc_var + (#eq? @_tc_var @_loop_var_inner) + field: (field_identifier) @_field_check + (#eq? @_field_check @_field_name)) + (identifier) @_arg_var + (#eq? @_arg_var @_loop_var_outer) + ] + . + (func_literal + parameters: (parameter_list + (parameter_declaration + type: (pointer_type + (qualified_type + package: (package_identifier) @_pkg + name: (type_identifier) @_type + (#eq? @_pkg "testing") + (#eq? @_type "T")))))))))))) @_ + (#set! tag go-table-test-case-without-explicit-variable)) diff --git a/crates/languages/src/go/textobjects.scm b/crates/languages/src/go/textobjects.scm index eb4f3a00501..4e0a78991a4 100644 --- a/crates/languages/src/go/textobjects.scm +++ b/crates/languages/src/go/textobjects.scm @@ -1,24 +1,27 @@ (function_declaration - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (method_declaration - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (type_declaration - (type_spec (struct_type (field_declaration_list ( - "{" - (_)* @class.inside - "}")?)))) @class.around + (type_spec + (struct_type + (field_declaration_list + ("{" + (_)* @class.inside + "}")?)))) @class.around (type_declaration - (type_spec (interface_type - (_)* @class.inside))) @class.around + (type_spec + (interface_type + (_)* @class.inside))) @class.around (type_declaration) @class.around diff --git a/crates/languages/src/gomod/highlights.scm b/crates/languages/src/gomod/highlights.scm index 03be1b59571..f026035cb12 100644 --- a/crates/languages/src/gomod/highlights.scm +++ b/crates/languages/src/gomod/highlights.scm @@ -15,6 +15,6 @@ (comment) @comment [ -(version) -(go_version) + (version) + (go_version) ] @string diff --git a/crates/languages/src/gomod/injections.scm b/crates/languages/src/gomod/injections.scm index 321c90add37..2f0e58eb643 100644 --- a/crates/languages/src/gomod/injections.scm +++ b/crates/languages/src/gomod/injections.scm @@ -1,2 +1,2 @@ ((comment) @injection.content - (#set! injection.language "comment")) + (#set! injection.language "comment")) diff --git a/crates/languages/src/gomod/structure.scm b/crates/languages/src/gomod/structure.scm index ce1bc9aa3ee..2da1b0d5e64 100644 --- a/crates/languages/src/gomod/structure.scm +++ b/crates/languages/src/gomod/structure.scm @@ -1,35 +1,29 @@ (require_directive "require" @structure.anchor - ("(") @structure.open - (")") @structure.close -) + "(" @structure.open + ")" @structure.close) (exclude_directive "exclude" @structure.anchor - ("(") @structure.open - (")") @structure.close -) + "(" @structure.open + ")" @structure.close) (module_directive "module" @structure.anchor - ("(") @structure.open - (")") @structure.close -) + "(" @structure.open + ")" @structure.close) (replace_directive "replace" @structure.anchor - ("(") @structure.open - (")") @structure.close -) + "(" @structure.open + ")" @structure.close) (retract_directive "retract" @structure.anchor - ("(") @structure.open - (")") @structure.close -) + "(" @structure.open + ")" @structure.close) (ignore_directive "ignore" @structure.anchor - ("(") @structure.open - (")") @structure.close -) + "(" @structure.open + ")" @structure.close) diff --git a/crates/languages/src/gowork/highlights.scm b/crates/languages/src/gowork/highlights.scm index 9c84bcc4496..b9d3d42e630 100644 --- a/crates/languages/src/gowork/highlights.scm +++ b/crates/languages/src/gowork/highlights.scm @@ -9,6 +9,6 @@ (comment) @comment [ -(version) -(go_version) + (version) + (go_version) ] @string diff --git a/crates/languages/src/gowork/injections.scm b/crates/languages/src/gowork/injections.scm index 321c90add37..2f0e58eb643 100644 --- a/crates/languages/src/gowork/injections.scm +++ b/crates/languages/src/gowork/injections.scm @@ -1,2 +1,2 @@ ((comment) @injection.content - (#set! injection.language "comment")) + (#set! injection.language "comment")) diff --git a/crates/languages/src/javascript/brackets.scm b/crates/languages/src/javascript/brackets.scm index a16a6432692..69acbcd614e 100644 --- a/crates/languages/src/javascript/brackets.scm +++ b/crates/languages/src/javascript/brackets.scm @@ -1,9 +1,29 @@ -("(" @open ")" @close) -("[" @open "]" @close) -("{" @open "}" @close) -("<" @open ">" @close) -("<" @open "/>" @close) -("" @close) -(("\"" @open "\"" @close) (#set! rainbow.exclude)) -(("'" @open "'" @close) (#set! rainbow.exclude)) -(("`" @open "`" @close) (#set! rainbow.exclude)) +("(" @open + ")" @close) + +("[" @open + "]" @close) + +("{" @open + "}" @close) + +("<" @open + ">" @close) + +("<" @open + "/>" @close) + +("" @close) + +(("\"" @open + "\"" @close) + (#set! rainbow.exclude)) + +(("'" @open + "'" @close) + (#set! rainbow.exclude)) + +(("`" @open + "`" @close) + (#set! rainbow.exclude)) diff --git a/crates/languages/src/javascript/debugger.scm b/crates/languages/src/javascript/debugger.scm index a99f194a4a4..8f384fd8ad9 100644 --- a/crates/languages/src/javascript/debugger.scm +++ b/crates/languages/src/javascript/debugger.scm @@ -1,23 +1,51 @@ -(lexical_declaration (variable_declarator name: (identifier) @debug-variable)) +(lexical_declaration + (variable_declarator + name: (identifier) @debug-variable)) -(for_in_statement left: (identifier) @debug-variable) -(for_statement initializer: (lexical_declaration (variable_declarator name: (identifier) @debug-variable))) +(for_in_statement + left: (identifier) @debug-variable) -(binary_expression left: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) -(binary_expression right: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(for_statement + initializer: (lexical_declaration + (variable_declarator + name: (identifier) @debug-variable))) -(unary_expression argument: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) -(update_expression argument: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(binary_expression + left: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(return_statement (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(binary_expression + right: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(parenthesized_expression (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(unary_expression + argument: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(array (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(update_expression + argument: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(pair value: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(return_statement + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(member_expression object: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(parenthesized_expression + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(array + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(pair + value: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(member_expression + object: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) (statement_block) @debug-scope + (program) @debug-scope diff --git a/crates/languages/src/javascript/highlights.scm b/crates/languages/src/javascript/highlights.scm index 5fb31ce100b..4824684177a 100644 --- a/crates/languages/src/javascript/highlights.scm +++ b/crates/languages/src/javascript/highlights.scm @@ -1,56 +1,33 @@ ; Variables - (identifier) @variable (call_expression function: (member_expression object: (identifier) @type - (#any-of? - @type - "Promise" - "Array" - "Object" - "Map" - "Set" - "WeakMap" - "WeakSet" - "Date" - "Error" - "TypeError" - "RangeError" - "SyntaxError" - "ReferenceError" - "EvalError" - "URIError" - "RegExp" - "Function" - "Number" - "String" - "Boolean" - "Symbol" - "BigInt" - "Proxy" - "ArrayBuffer" - "DataView" - ) - ) -) + (#any-of? @type + "Promise" "Array" "Object" "Map" "Set" "WeakMap" "WeakSet" "Date" "Error" "TypeError" + "RangeError" "SyntaxError" "ReferenceError" "EvalError" "URIError" "RegExp" "Function" + "Number" "String" "Boolean" "Symbol" "BigInt" "Proxy" "ArrayBuffer" "DataView"))) ; Properties - (property_identifier) @property + (shorthand_property_identifier) @property + (shorthand_property_identifier_pattern) @property + (private_property_identifier) @property ; Function and method calls - (call_expression function: (identifier) @function) (call_expression function: (member_expression - property: [(property_identifier) (private_property_identifier)] @function.method)) + property: [ + (property_identifier) + (private_property_identifier) + ] @function.method)) (new_expression constructor: (identifier) @type) @@ -59,36 +36,58 @@ module: (identifier) @type) ; Function and method definitions - (function_expression name: (identifier) @function) + (function_declaration name: (identifier) @function) + (method_definition - name: [(property_identifier) (private_property_identifier)] @function.method) + name: [ + (property_identifier) + (private_property_identifier) + ] @function.method) + (method_definition - name: (property_identifier) @constructor - (#eq? @constructor "constructor")) + name: (property_identifier) @constructor + (#eq? @constructor "constructor")) (pair - key: [(property_identifier) (private_property_identifier)] @function.method - value: [(function_expression) (arrow_function)]) + key: [ + (property_identifier) + (private_property_identifier) + ] @function.method + value: [ + (function_expression) + (arrow_function) + ]) (assignment_expression left: (member_expression - property: [(property_identifier) (private_property_identifier)] @function.method) - right: [(function_expression) (arrow_function)]) + property: [ + (property_identifier) + (private_property_identifier) + ] @function.method) + right: [ + (function_expression) + (arrow_function) + ]) (variable_declarator name: (identifier) @function - value: [(function_expression) (arrow_function)]) + value: [ + (function_expression) + (arrow_function) + ]) (assignment_expression left: (identifier) @function - right: [(function_expression) (arrow_function)]) + right: [ + (function_expression) + (arrow_function) + ]) ; Parameters - (required_parameter (identifier) @variable.parameter) @@ -121,6 +120,7 @@ ; Special identifiers ; (type_identifier) @type + (predefined_type) @type.builtin (class_declaration @@ -133,12 +133,12 @@ (identifier) (shorthand_property_identifier) (shorthand_property_identifier_pattern) - ] @constant - (#match? @constant "^_*[A-Z_][A-Z\\d_]*$")) +] @constant + (#match? @constant "^_*[A-Z_][A-Z\\d_]*$")) ; Literals - (this) @variable.special + (super) @variable.special [ @@ -163,11 +163,12 @@ (escape_sequence) @string.escape (regex) @string.regex + (regex_flags) @keyword.operator.regex + (number) @number ; Tokens - [ ";" "?." @@ -224,7 +225,8 @@ "..." ] @operator -(regex "/" @string.regex) +(regex + "/" @string.regex) [ "(" @@ -233,14 +235,13 @@ "]" "{" "}" -] @punctuation.bracket +] @punctuation.bracket (ternary_expression [ "?" ":" - ] @operator -) + ] @operator) [ "abstract" @@ -310,7 +311,8 @@ "yield" ] @keyword.control -(switch_default "default" @keyword.control) +(switch_default + "default" @keyword.control) (template_substitution "${" @punctuation.special @@ -320,7 +322,8 @@ "<" @punctuation.bracket ">" @punctuation.bracket) -(decorator "@" @punctuation.special) +(decorator + "@" @punctuation.special) ; JSX elements (jsx_opening_element @@ -328,36 +331,61 @@ (identifier) @type (member_expression object: (identifier) @type - property: (property_identifier) @type - ) - ] -) + property: (property_identifier) @type) + ]) + (jsx_closing_element [ (identifier) @type (member_expression object: (identifier) @type - property: (property_identifier) @type - ) - ] -) + property: (property_identifier) @type) + ]) + (jsx_self_closing_element [ (identifier) @type (member_expression object: (identifier) @type - property: (property_identifier) @type - ) - ] -) + property: (property_identifier) @type) + ]) + +(jsx_opening_element + (identifier) @tag.jsx + (#match? @tag.jsx "^[a-z][^.]*$")) + +(jsx_closing_element + (identifier) @tag.jsx + (#match? @tag.jsx "^[a-z][^.]*$")) + +(jsx_self_closing_element + (identifier) @tag.jsx + (#match? @tag.jsx "^[a-z][^.]*$")) + +(jsx_attribute + (property_identifier) @attribute.jsx) + +(jsx_opening_element + ([ + "<" + ">" + ]) @punctuation.bracket.jsx) + +(jsx_closing_element + ([ + "" + ]) @punctuation.bracket.jsx) + +(jsx_self_closing_element + ([ + "<" + "/>" + ]) @punctuation.bracket.jsx) + +(jsx_attribute + "=" @punctuation.delimiter.jsx) -(jsx_opening_element (identifier) @tag.jsx (#match? @tag.jsx "^[a-z][^.]*$")) -(jsx_closing_element (identifier) @tag.jsx (#match? @tag.jsx "^[a-z][^.]*$")) -(jsx_self_closing_element (identifier) @tag.jsx (#match? @tag.jsx "^[a-z][^.]*$")) -(jsx_attribute (property_identifier) @attribute.jsx) -(jsx_opening_element (["<" ">"]) @punctuation.bracket.jsx) -(jsx_closing_element ([""]) @punctuation.bracket.jsx) -(jsx_self_closing_element (["<" "/>"]) @punctuation.bracket.jsx) -(jsx_attribute "=" @punctuation.delimiter.jsx) (jsx_text) @text.jsx + (html_character_reference) @string.special diff --git a/crates/languages/src/javascript/imports.scm b/crates/languages/src/javascript/imports.scm index e26b97aeef9..0e688d53fb6 100644 --- a/crates/languages/src/javascript/imports.scm +++ b/crates/languages/src/javascript/imports.scm @@ -1,14 +1,16 @@ (import_statement - import_clause: (import_clause - [ - (identifier) @name - (named_imports - (import_specifier - name: (_) @name - alias: (_)? @alias)) - ]) - source: (string (string_fragment) @source)) @import + import_clause: (import_clause + [ + (identifier) @name + (named_imports + (import_specifier + name: (_) @name + alias: (_)? @alias)) + ]) + source: (string + (string_fragment) @source)) @import (import_statement - !import_clause - source: (string (string_fragment) @source @wildcard)) @import + !import_clause + source: (string + (string_fragment) @source @wildcard)) @import diff --git a/crates/languages/src/javascript/indents.scm b/crates/languages/src/javascript/indents.scm index 9897f3060ea..1e72160bca2 100644 --- a/crates/languages/src/javascript/indents.scm +++ b/crates/languages/src/javascript/indents.scm @@ -1,20 +1,32 @@ [ - (call_expression) - (assignment_expression) - (member_expression) - (lexical_declaration) - (variable_declaration) - (assignment_expression) - (if_statement) - (for_statement) + (call_expression) + (assignment_expression) + (member_expression) + (lexical_declaration) + (variable_declaration) + (assignment_expression) + (if_statement) + (for_statement) ] @indent -(_ "[" "]" @end) @indent -(_ "<" ">" @end) @indent -(_ "{" "}" @end) @indent -(_ "(" ")" @end) @indent +(_ + "[" + "]" @end) @indent -(jsx_opening_element ">" @end) @indent +(_ + "<" + ">" @end) @indent + +(_ + "{" + "}" @end) @indent + +(_ + "(" + ")" @end) @indent + +(jsx_opening_element + ">" @end) @indent (jsx_element (jsx_opening_element) @start diff --git a/crates/languages/src/javascript/injections.scm b/crates/languages/src/javascript/injections.scm index 244e025a6f5..8ccfc5028de 100644 --- a/crates/languages/src/javascript/injections.scm +++ b/crates/languages/src/javascript/injections.scm @@ -1,6 +1,5 @@ ((comment) @injection.content - (#set! injection.language "comment") -) + (#set! injection.language "comment")) (((comment) @_jsdoc_comment (#match? @_jsdoc_comment "(?s)^/[*][*][^*].*[*]/$")) @injection.content @@ -10,119 +9,136 @@ (#set! injection.language "regex")) (call_expression - function: (identifier) @_name (#eq? @_name "css") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "css")) -) + function: (identifier) @_name + (#eq? @_name "css") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "css"))) (call_expression function: (member_expression - object: (identifier) @_obj (#eq? @_obj "styled") + object: (identifier) @_obj + (#eq? @_obj "styled") property: (property_identifier)) - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "css")) -) + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "css"))) (call_expression function: (call_expression - function: (identifier) @_name (#eq? @_name "styled")) - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "css")) -) + function: (identifier) @_name + (#eq? @_name "styled")) + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "css"))) (call_expression - function: (identifier) @_name (#eq? @_name "html") + function: (identifier) @_name + (#eq? @_name "html") arguments: (template_string) @injection.content - (#set! injection.language "html") -) + (#set! injection.language "html")) (call_expression - function: (identifier) @_name (#eq? @_name "js") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "javascript")) -) + function: (identifier) @_name + (#eq? @_name "js") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "javascript"))) (call_expression - function: (identifier) @_name (#eq? @_name "json") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "json")) -) + function: (identifier) @_name + (#eq? @_name "json") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "json"))) (call_expression - function: (identifier) @_name (#eq? @_name "sql") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "sql")) -) + function: (identifier) @_name + (#eq? @_name "sql") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "sql"))) (call_expression - function: (identifier) @_name (#eq? @_name "ts") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "typescript")) -) + function: (identifier) @_name + (#eq? @_name "ts") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "typescript"))) (call_expression - function: (identifier) @_name (#match? @_name "^ya?ml$") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "yaml")) -) + function: (identifier) @_name + (#match? @_name "^ya?ml$") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "yaml"))) (call_expression - function: (identifier) @_name (#match? @_name "^g(raph)?ql$") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "graphql")) -) + function: (identifier) @_name + (#match? @_name "^g(raph)?ql$") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "graphql"))) (call_expression - function: (identifier) @_name (#match? @_name "^g(raph)?ql$") - arguments: (arguments (template_string (string_fragment) @injection.content - (#set! injection.language "graphql"))) -) + function: (identifier) @_name + (#match? @_name "^g(raph)?ql$") + arguments: (arguments + (template_string + (string_fragment) @injection.content + (#set! injection.language "graphql")))) (call_expression - function: (identifier) @_name(#match? @_name "^iso$") - arguments: (arguments (template_string (string_fragment) @injection.content - (#set! injection.language "isograph"))) -) + function: (identifier) @_name + (#match? @_name "^iso$") + arguments: (arguments + (template_string + (string_fragment) @injection.content + (#set! injection.language "isograph")))) ; Parse the contents of strings and tagged template ; literals with leading ECMAScript comments: ; '/* html */' or '/*html*/' -( - ((comment) @_ecma_comment [ - (string (string_fragment) @injection.content) - (template_string (string_fragment) @injection.content) +(((comment) @_ecma_comment + [ + (string + (string_fragment) @injection.content) + (template_string + (string_fragment) @injection.content) ]) (#match? @_ecma_comment "^\\/\\*\\s*html\\s*\\*\\/") - (#set! injection.language "html") -) + (#set! injection.language "html")) ; '/* sql */' or '/*sql*/' -( - ((comment) @_ecma_comment [ - (string (string_fragment) @injection.content) - (template_string (string_fragment) @injection.content) +(((comment) @_ecma_comment + [ + (string + (string_fragment) @injection.content) + (template_string + (string_fragment) @injection.content) ]) (#match? @_ecma_comment "^\\/\\*\\s*sql\\s*\\*\\/") - (#set! injection.language "sql") -) + (#set! injection.language "sql")) ; '/* gql */' or '/*gql*/' ; '/* graphql */' or '/*graphql*/' -( - ((comment) @_ecma_comment [ - (string (string_fragment) @injection.content) - (template_string (string_fragment) @injection.content) +(((comment) @_ecma_comment + [ + (string + (string_fragment) @injection.content) + (template_string + (string_fragment) @injection.content) ]) (#match? @_ecma_comment "^\\/\\*\\s*(gql|graphql)\\s*\\*\\/") - (#set! injection.language "graphql") -) + (#set! injection.language "graphql")) ; '/* css */' or '/*css*/' -( - ((comment) @_ecma_comment [ - (string (string_fragment) @injection.content) - (template_string (string_fragment) @injection.content) +(((comment) @_ecma_comment + [ + (string + (string_fragment) @injection.content) + (template_string + (string_fragment) @injection.content) ]) (#match? @_ecma_comment "^\\/\\*\\s*(css)\\s*\\*\\/") - (#set! injection.language "css") -) + (#set! injection.language "css")) diff --git a/crates/languages/src/javascript/outline.scm b/crates/languages/src/javascript/outline.scm index 5f72103bc63..7b8e4b2d46c 100644 --- a/crates/languages/src/javascript/outline.scm +++ b/crates/languages/src/javascript/outline.scm @@ -1,223 +1,269 @@ (internal_module - "namespace" @context - name: (_) @name) @item + "namespace" @context + name: (_) @name) @item (enum_declaration - "enum" @context - name: (_) @name) @item + "enum" @context + name: (_) @name) @item (function_declaration - "async"? @context - "function" @context - name: (_) @name - parameters: (formal_parameters - "(" @context - ")" @context)) @item + "async"? @context + "function" @context + name: (_) @name + parameters: (formal_parameters + "(" @context + ")" @context)) @item (generator_function_declaration - "async"? @context - "function" @context - "*" @context - name: (_) @name - parameters: (formal_parameters - "(" @context - ")" @context)) @item + "async"? @context + "function" @context + "*" @context + name: (_) @name + parameters: (formal_parameters + "(" @context + ")" @context)) @item (interface_declaration - "interface" @context - name: (_) @name) @item + "interface" @context + name: (_) @name) @item (program - (export_statement - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (identifier) @name) @item))) + (export_statement + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (identifier) @name) @item))) ; Exported array destructuring (program - (export_statement - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (array_pattern - [ - (identifier) @name @item - (assignment_pattern left: (identifier) @name @item) - (rest_pattern (identifier) @name @item) - ]))))) + (export_statement + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (array_pattern + [ + (identifier) @name @item + (assignment_pattern + left: (identifier) @name @item) + (rest_pattern + (identifier) @name @item) + ]))))) ; Exported object destructuring (program - (export_statement - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (object_pattern - [(shorthand_property_identifier_pattern) @name @item - (pair_pattern - value: (identifier) @name @item) - (pair_pattern - value: (assignment_pattern left: (identifier) @name @item)) - (rest_pattern (identifier) @name @item)]))))) + (export_statement + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (object_pattern + [ + (shorthand_property_identifier_pattern) @name @item + (pair_pattern + value: (identifier) @name @item) + (pair_pattern + value: (assignment_pattern + left: (identifier) @name @item)) + (rest_pattern + (identifier) @name @item) + ]))))) (program - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (identifier) @name) @item)) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (identifier) @name) @item)) ; Top-level array destructuring (program - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (array_pattern - [ - (identifier) @name @item - (assignment_pattern left: (identifier) @name @item) - (rest_pattern (identifier) @name @item) - ])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (array_pattern + [ + (identifier) @name @item + (assignment_pattern + left: (identifier) @name @item) + (rest_pattern + (identifier) @name @item) + ])))) ; Top-level object destructuring (program - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (object_pattern - [(shorthand_property_identifier_pattern) @name @item - (pair_pattern - value: (identifier) @name @item) - (pair_pattern - value: (assignment_pattern left: (identifier) @name @item)) - (rest_pattern (identifier) @name @item)])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (object_pattern + [ + (shorthand_property_identifier_pattern) @name @item + (pair_pattern + value: (identifier) @name @item) + (pair_pattern + value: (assignment_pattern + left: (identifier) @name @item)) + (rest_pattern + (identifier) @name @item) + ])))) (class_declaration - "class" @context - name: (_) @name) @item + "class" @context + name: (_) @name) @item ; Method definitions in classes (not in object literals) (class_body - (method_definition - [ - "get" - "set" - "async" - "*" - "readonly" - "static" - (override_modifier) - (accessibility_modifier) - ]* @context - name: (_) @name - parameters: (formal_parameters - "(" @context - ")" @context)) @item) + (method_definition + [ + "get" + "set" + "async" + "*" + "readonly" + "static" + (override_modifier) + (accessibility_modifier) + ]* @context + name: (_) @name + parameters: (formal_parameters + "(" @context + ")" @context)) @item) ; Object literal methods (variable_declarator - value: (object - (method_definition - [ - "get" - "set" - "async" - "*" - ]* @context - name: (_) @name - parameters: (formal_parameters - "(" @context - ")" @context)) @item)) + value: (object + (method_definition + [ + "get" + "set" + "async" + "*" + ]* @context + name: (_) @name + parameters: (formal_parameters + "(" @context + ")" @context)) @item)) (public_field_definition - [ - "declare" - "readonly" - "abstract" - "static" - (accessibility_modifier) - ]* @context - name: (_) @name) @item + [ + "declare" + "readonly" + "abstract" + "static" + (accessibility_modifier) + ]* @context + name: (_) @name) @item ; Add support for (node:test, bun:test and Jest) runnable -( - (call_expression - function: [ - (identifier) @_name - (member_expression - object: [ - (identifier) @_name - (member_expression object: (identifier) @_name) - ] - ) - ] @context - (#any-of? @_name "it" "test" "describe" "context" "suite") - arguments: ( - arguments . [ - (string (string_fragment) @name) - (identifier) @name - ] - ) - ) -) @item +((call_expression + function: [ + (identifier) @_name + (member_expression + object: [ + (identifier) @_name + (member_expression + object: (identifier) @_name) + ]) + ] @context + (#any-of? @_name "it" "test" "describe" "context" "suite") + arguments: (arguments + . + [ + (string + (string_fragment) @name) + (identifier) @name + ]))) @item ; Add support for parameterized tests -( - (call_expression - function: (call_expression - function: (member_expression - object: [(identifier) @_name (member_expression object: (identifier) @_name)] - property: (property_identifier) @_property - ) - (#any-of? @_name "it" "test" "describe" "context" "suite") - (#eq? @_property "each") - ) - arguments: ( - arguments . [ - (string (string_fragment) @name) - (identifier) @name - ] - ) - ) -) @item +((call_expression + function: (call_expression + function: (member_expression + object: [ + (identifier) @_name + (member_expression + object: (identifier) @_name) + ] + property: (property_identifier) @_property) + (#any-of? @_name "it" "test" "describe" "context" "suite") + (#eq? @_property "each")) + arguments: (arguments + . + [ + (string + (string_fragment) @name) + (identifier) @name + ]))) @item ; Object properties (pair - key: [ - (property_identifier) @name - (string (string_fragment) @name) - (number) @name - (computed_property_name) @name - ]) @item + key: [ + (property_identifier) @name + (string + (string_fragment) @name) + (number) @name + (computed_property_name) @name + ]) @item ; Nested variables in function bodies (statement_block - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (identifier) @name) @item)) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (identifier) @name) @item)) ; Nested array destructuring in functions (statement_block - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (array_pattern - [ - (identifier) @name @item - (assignment_pattern left: (identifier) @name @item) - (rest_pattern (identifier) @name @item) - ])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (array_pattern + [ + (identifier) @name @item + (assignment_pattern + left: (identifier) @name @item) + (rest_pattern + (identifier) @name @item) + ])))) ; Nested object destructuring in functions (statement_block - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (object_pattern - [(shorthand_property_identifier_pattern) @name @item - (pair_pattern value: (identifier) @name @item) - (pair_pattern value: (assignment_pattern left: (identifier) @name @item)) - (rest_pattern (identifier) @name @item)])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (object_pattern + [ + (shorthand_property_identifier_pattern) @name @item + (pair_pattern + value: (identifier) @name @item) + (pair_pattern + value: (assignment_pattern + left: (identifier) @name @item)) + (rest_pattern + (identifier) @name @item) + ])))) (comment) @annotation diff --git a/crates/languages/src/javascript/overrides.scm b/crates/languages/src/javascript/overrides.scm index 6dbbc88ef92..4707e2a89fd 100644 --- a/crates/languages/src/javascript/overrides.scm +++ b/crates/languages/src/javascript/overrides.scm @@ -2,7 +2,8 @@ (string) @string -(template_string (string_fragment) @string) +(template_string + (string_fragment) @string) (jsx_element) @element diff --git a/crates/languages/src/javascript/runnables.scm b/crates/languages/src/javascript/runnables.scm index c64aacb50e2..b410fb4d8ca 100644 --- a/crates/languages/src/javascript/runnables.scm +++ b/crates/languages/src/javascript/runnables.scm @@ -1,46 +1,42 @@ ; Add support for (node:test, bun:test and Jest) runnable ; Function expression that has `it`, `test` or `describe` as the function name -( - (call_expression - function: [ - (identifier) @_name - (member_expression - object: [ - (identifier) @_name - (member_expression object: (identifier) @_name) - ] - ) - ] - (#any-of? @_name "it" "test" "describe" "context" "suite") - arguments: ( - arguments . [ - (string (string_fragment) @run) - (identifier) @run - ] - ) - ) @_js-test - - (#set! tag js-test) -) +((call_expression + function: [ + (identifier) @_name + (member_expression + object: [ + (identifier) @_name + (member_expression + object: (identifier) @_name) + ]) + ] + (#any-of? @_name "it" "test" "describe" "context" "suite") + arguments: (arguments + . + [ + (string + (string_fragment) @run) + (identifier) @run + ])) @_js-test + (#set! tag js-test)) ; Add support for parameterized tests -( - (call_expression - function: (call_expression - function: (member_expression - object: [(identifier) @_name (member_expression object: (identifier) @_name)] - property: (property_identifier) @_property - ) - (#any-of? @_name "it" "test" "describe" "context" "suite") - (#eq? @_property "each") - ) - arguments: ( - arguments . [ - (string (string_fragment) @run) - (identifier) @run - ] - ) - ) @_js-test - - (#set! tag js-test) -) +((call_expression + function: (call_expression + function: (member_expression + object: [ + (identifier) @_name + (member_expression + object: (identifier) @_name) + ] + property: (property_identifier) @_property) + (#any-of? @_name "it" "test" "describe" "context" "suite") + (#eq? @_property "each")) + arguments: (arguments + . + [ + (string + (string_fragment) @run) + (identifier) @run + ])) @_js-test + (#set! tag js-test)) diff --git a/crates/languages/src/javascript/textobjects.scm b/crates/languages/src/javascript/textobjects.scm index eace658e6b9..f1cc9c9491e 100644 --- a/crates/languages/src/javascript/textobjects.scm +++ b/crates/languages/src/javascript/textobjects.scm @@ -1,85 +1,91 @@ (comment)+ @comment.around (function_declaration - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (method_definition - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (function_expression - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around ((arrow_function - body: (statement_block - "{" - (_)* @function.inside - "}")) @function.around - (#not-has-parent? @function.around variable_declarator)) + body: (statement_block + "{" + (_)* @function.inside + "}")) @function.around + (#not-has-parent? @function.around variable_declarator)) ; Arrow function in variable declaration - capture the full declaration ([ - (lexical_declaration - (variable_declarator - value: (arrow_function - body: (statement_block - "{" - (_)* @function.inside - "}")))) - (variable_declaration - (variable_declarator - value: (arrow_function - body: (statement_block - "{" - (_)* @function.inside - "}")))) + (lexical_declaration + (variable_declarator + value: (arrow_function + body: (statement_block + "{" + (_)* @function.inside + "}")))) + (variable_declaration + (variable_declarator + value: (arrow_function + body: (statement_block + "{" + (_)* @function.inside + "}")))) ]) @function.around ; Arrow function in variable declaration (captures body for expression-bodied arrows) ([ - (lexical_declaration - (variable_declarator - value: (arrow_function - body: (_) @function.inside))) - (variable_declaration - (variable_declarator - value: (arrow_function - body: (_) @function.inside))) + (lexical_declaration + (variable_declarator + value: (arrow_function + body: (_) @function.inside))) + (variable_declaration + (variable_declarator + value: (arrow_function + body: (_) @function.inside))) ]) @function.around ; Catch-all for arrow functions in other contexts (callbacks, etc.) ((arrow_function - body: (_) @function.inside) @function.around - (#not-has-parent? @function.around variable_declarator)) + body: (_) @function.inside) @function.around + (#not-has-parent? @function.around variable_declarator)) (generator_function - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (generator_function_declaration - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (class_declaration - body: (_ - "{" - [(_) ";"?]* @class.inside - "}" )) @class.around + body: (_ + "{" + [ + (_) + ";"? + ]* @class.inside + "}")) @class.around (class - body: (_ - "{" - [(_) ";"?]* @class.inside - "}" )) @class.around + body: (_ + "{" + [ + (_) + ";"? + ]* @class.inside + "}")) @class.around diff --git a/crates/languages/src/jsdoc/brackets.scm b/crates/languages/src/jsdoc/brackets.scm index 0e1bf5ca191..0f6ce4bf3d4 100644 --- a/crates/languages/src/jsdoc/brackets.scm +++ b/crates/languages/src/jsdoc/brackets.scm @@ -1,2 +1,5 @@ -("[" @open "]" @close) -("{" @open "}" @close) +("[" @open + "]" @close) + +("{" @open + "}" @close) diff --git a/crates/languages/src/jsdoc/highlights.scm b/crates/languages/src/jsdoc/highlights.scm index 581b5d8111f..4b5657cb2d3 100644 --- a/crates/languages/src/jsdoc/highlights.scm +++ b/crates/languages/src/jsdoc/highlights.scm @@ -1,3 +1,5 @@ (tag_name) @keyword.jsdoc + (type) @type.jsdoc + (identifier) @variable.jsdoc diff --git a/crates/languages/src/json/brackets.scm b/crates/languages/src/json/brackets.scm index cd5cdf328b3..ac2e2ad37bf 100644 --- a/crates/languages/src/json/brackets.scm +++ b/crates/languages/src/json/brackets.scm @@ -1,3 +1,9 @@ -("[" @open "]" @close) -("{" @open "}" @close) -(("\"" @open "\"" @close) (#set! rainbow.exclude)) +("[" @open + "]" @close) + +("{" @open + "}" @close) + +(("\"" @open + "\"" @close) + (#set! rainbow.exclude)) diff --git a/crates/languages/src/json/highlights.scm b/crates/languages/src/json/highlights.scm index 1098320ccba..f9b1c337358 100644 --- a/crates/languages/src/json/highlights.scm +++ b/crates/languages/src/json/highlights.scm @@ -1,6 +1,7 @@ (comment) @comment (string) @string + (escape_sequence) @string.escape (pair diff --git a/crates/languages/src/json/indents.scm b/crates/languages/src/json/indents.scm index b7b2a2e7670..63b015c2fe7 100644 --- a/crates/languages/src/json/indents.scm +++ b/crates/languages/src/json/indents.scm @@ -1,2 +1,5 @@ -(array "]" @end) @indent -(object "}" @end) @indent +(array + "]" @end) @indent + +(object + "}" @end) @indent diff --git a/crates/languages/src/json/outline.scm b/crates/languages/src/json/outline.scm index 43e2743478b..c7f98807776 100644 --- a/crates/languages/src/json/outline.scm +++ b/crates/languages/src/json/outline.scm @@ -1,2 +1,3 @@ (pair - key: (string (string_content) @name)) @item + key: (string + (string_content) @name)) @item diff --git a/crates/languages/src/json/redactions.scm b/crates/languages/src/json/redactions.scm index 7359637244a..c220d0c18b7 100644 --- a/crates/languages/src/json/redactions.scm +++ b/crates/languages/src/json/redactions.scm @@ -1,4 +1,11 @@ -(pair value: (number) @redact) -(pair value: (string) @redact) -(array (number) @redact) -(array (string) @redact) +(pair + value: (number) @redact) + +(pair + value: (string) @redact) + +(array + (number) @redact) + +(array + (string) @redact) diff --git a/crates/languages/src/json/runnables.scm b/crates/languages/src/json/runnables.scm index 2396f05a572..a0d95d89b57 100644 --- a/crates/languages/src/json/runnables.scm +++ b/crates/languages/src/json/runnables.scm @@ -1,21 +1,13 @@ ; Add support `package.json` and `composer.json` script runnable - -( - (document - (object - (pair - key: (string - (string_content) @_name - (#eq? @_name "scripts") - ) - value: (object - (pair - key: (string (string_content) @run @script) - ) - ) - ) - ) - ) - (#set! tag package-script) - (#set! tag composer-script) -) +((document + (object + (pair + key: (string + (string_content) @_name + (#eq? @_name "scripts")) + value: (object + (pair + key: (string + (string_content) @run @script)))))) + (#set! tag package-script) + (#set! tag composer-script)) diff --git a/crates/languages/src/jsonc/brackets.scm b/crates/languages/src/jsonc/brackets.scm index cd5cdf328b3..ac2e2ad37bf 100644 --- a/crates/languages/src/jsonc/brackets.scm +++ b/crates/languages/src/jsonc/brackets.scm @@ -1,3 +1,9 @@ -("[" @open "]" @close) -("{" @open "}" @close) -(("\"" @open "\"" @close) (#set! rainbow.exclude)) +("[" @open + "]" @close) + +("{" @open + "}" @close) + +(("\"" @open + "\"" @close) + (#set! rainbow.exclude)) diff --git a/crates/languages/src/jsonc/highlights.scm b/crates/languages/src/jsonc/highlights.scm index 1098320ccba..f9b1c337358 100644 --- a/crates/languages/src/jsonc/highlights.scm +++ b/crates/languages/src/jsonc/highlights.scm @@ -1,6 +1,7 @@ (comment) @comment (string) @string + (escape_sequence) @string.escape (pair diff --git a/crates/languages/src/jsonc/indents.scm b/crates/languages/src/jsonc/indents.scm index b7b2a2e7670..63b015c2fe7 100644 --- a/crates/languages/src/jsonc/indents.scm +++ b/crates/languages/src/jsonc/indents.scm @@ -1,2 +1,5 @@ -(array "]" @end) @indent -(object "}" @end) @indent +(array + "]" @end) @indent + +(object + "}" @end) @indent diff --git a/crates/languages/src/jsonc/injections.scm b/crates/languages/src/jsonc/injections.scm index 01e833d1e31..2f0e58eb643 100644 --- a/crates/languages/src/jsonc/injections.scm +++ b/crates/languages/src/jsonc/injections.scm @@ -1,2 +1,2 @@ ((comment) @injection.content - (#set! injection.language "comment")) + (#set! injection.language "comment")) diff --git a/crates/languages/src/jsonc/outline.scm b/crates/languages/src/jsonc/outline.scm index 43e2743478b..c7f98807776 100644 --- a/crates/languages/src/jsonc/outline.scm +++ b/crates/languages/src/jsonc/outline.scm @@ -1,2 +1,3 @@ (pair - key: (string (string_content) @name)) @item + key: (string + (string_content) @name)) @item diff --git a/crates/languages/src/jsonc/overrides.scm b/crates/languages/src/jsonc/overrides.scm index 81fec9a5f57..544e9876f8e 100644 --- a/crates/languages/src/jsonc/overrides.scm +++ b/crates/languages/src/jsonc/overrides.scm @@ -1,2 +1,3 @@ (comment) @comment.inclusive + (string) @string diff --git a/crates/languages/src/jsonc/redactions.scm b/crates/languages/src/jsonc/redactions.scm index 7359637244a..c220d0c18b7 100644 --- a/crates/languages/src/jsonc/redactions.scm +++ b/crates/languages/src/jsonc/redactions.scm @@ -1,4 +1,11 @@ -(pair value: (number) @redact) -(pair value: (string) @redact) -(array (number) @redact) -(array (string) @redact) +(pair + value: (number) @redact) + +(pair + value: (string) @redact) + +(array + (number) @redact) + +(array + (string) @redact) diff --git a/crates/languages/src/markdown-inline/highlights.scm b/crates/languages/src/markdown-inline/highlights.scm index 3c9f6fbcc34..26c066ea0a0 100644 --- a/crates/languages/src/markdown-inline/highlights.scm +++ b/crates/languages/src/markdown-inline/highlights.scm @@ -1,6 +1,9 @@ (emphasis) @emphasis.markup + (strong_emphasis) @emphasis.strong.markup + (code_span) @text.literal.markup + (strikethrough) @strikethrough.markup [ @@ -13,8 +16,18 @@ (link_label) ] @link_text.markup -(inline_link ["(" ")"] @link_uri.markup) -(image ["(" ")"] @link_uri.markup) +(inline_link + [ + "(" + ")" + ] @link_uri.markup) + +(image + [ + "(" + ")" + ] @link_uri.markup) + [ (link_destination) (uri_autolink) diff --git a/crates/languages/src/markdown/brackets.scm b/crates/languages/src/markdown/brackets.scm index 172a2e7f723..5aaf93f63da 100644 --- a/crates/languages/src/markdown/brackets.scm +++ b/crates/languages/src/markdown/brackets.scm @@ -1,7 +1,24 @@ -("(" @open ")" @close) -("[" @open "]" @close) -("{" @open "}" @close) -(("\"" @open "\"" @close) (#set! rainbow.exclude)) -(("`" @open "`" @close) (#set! rainbow.exclude)) -(("'" @open "'" @close) (#set! rainbow.exclude)) -(((fenced_code_block_delimiter) @open (fenced_code_block_delimiter) @close) (#set! rainbow.exclude)) +("(" @open + ")" @close) + +("[" @open + "]" @close) + +("{" @open + "}" @close) + +(("\"" @open + "\"" @close) + (#set! rainbow.exclude)) + +(("`" @open + "`" @close) + (#set! rainbow.exclude)) + +(("'" @open + "'" @close) + (#set! rainbow.exclude)) + +(((fenced_code_block_delimiter) @open + (fenced_code_block_delimiter) @close) + (#set! rainbow.exclude)) diff --git a/crates/languages/src/markdown/highlights.scm b/crates/languages/src/markdown/highlights.scm index 707bcc08163..1a471a848df 100644 --- a/crates/languages/src/markdown/highlights.scm +++ b/crates/languages/src/markdown/highlights.scm @@ -9,7 +9,9 @@ (setext_heading) (thematic_break) ] @title.markup -(setext_heading (paragraph) @title.markup) + +(setext_heading + (paragraph) @title.markup) [ (list_marker_plus) @@ -20,10 +22,18 @@ ] @punctuation.list_marker.markup (block_quote_marker) @punctuation.markup -(pipe_table_header "|" @punctuation.markup) -(pipe_table_row "|" @punctuation.markup) -(pipe_table_delimiter_row "|" @punctuation.markup) -(pipe_table_delimiter_cell "-" @punctuation.markup) + +(pipe_table_header + "|" @punctuation.markup) + +(pipe_table_row + "|" @punctuation.markup) + +(pipe_table_delimiter_row + "|" @punctuation.markup) + +(pipe_table_delimiter_cell + "-" @punctuation.markup) [ (fenced_code_block_delimiter) @@ -31,4 +41,5 @@ ] @punctuation.embedded.markup (link_reference_definition) @link_text.markup + (link_destination) @link_uri.markup diff --git a/crates/languages/src/markdown/indents.scm b/crates/languages/src/markdown/indents.scm index dc6dfa61183..742100e3238 100644 --- a/crates/languages/src/markdown/indents.scm +++ b/crates/languages/src/markdown/indents.scm @@ -1,3 +1,4 @@ -(list (list_item) @indent) +(list + (list_item) @indent) (list_item) @start.list_item diff --git a/crates/languages/src/markdown/injections.scm b/crates/languages/src/markdown/injections.scm index f2b959dfdae..46717b28a97 100644 --- a/crates/languages/src/markdown/injections.scm +++ b/crates/languages/src/markdown/injections.scm @@ -4,11 +4,13 @@ (code_fence_content) @injection.content) ((inline) @injection.content - (#set! injection.language "markdown-inline")) + (#set! injection.language "markdown-inline")) ((html_block) @injection.content (#set! injection.language "html")) -((minus_metadata) @injection.content (#set! injection.language "yaml")) +((minus_metadata) @injection.content + (#set! injection.language "yaml")) -((plus_metadata) @injection.content (#set! injection.language "toml")) +((plus_metadata) @injection.content + (#set! injection.language "toml")) diff --git a/crates/languages/src/markdown/outline.scm b/crates/languages/src/markdown/outline.scm index dcca3db4d4c..a4d8c586dd9 100644 --- a/crates/languages/src/markdown/outline.scm +++ b/crates/languages/src/markdown/outline.scm @@ -1,3 +1,6 @@ (section - (atx_heading - . (_) @context . (_) @name)) @item + (atx_heading + . + (_) @context + . + (_) @name)) @item diff --git a/crates/languages/src/markdown/textobjects.scm b/crates/languages/src/markdown/textobjects.scm index e0f76c53651..c84914b2409 100644 --- a/crates/languages/src/markdown/textobjects.scm +++ b/crates/languages/src/markdown/textobjects.scm @@ -1,3 +1,3 @@ (section - (atx_heading) - (_)* @class.inside) @class.around + (atx_heading) + (_)* @class.inside) @class.around diff --git a/crates/languages/src/python/brackets.scm b/crates/languages/src/python/brackets.scm index 9e5b59788fc..5abcf6bdd43 100644 --- a/crates/languages/src/python/brackets.scm +++ b/crates/languages/src/python/brackets.scm @@ -1,4 +1,12 @@ -("(" @open ")" @close) -("[" @open "]" @close) -("{" @open "}" @close) -(((string_start) @open (string_end) @close) (#set! rainbow.exclude)) +("(" @open + ")" @close) + +("[" @open + "]" @close) + +("{" @open + "}" @close) + +(((string_start) @open + (string_end) @close) + (#set! rainbow.exclude)) diff --git a/crates/languages/src/python/debugger.scm b/crates/languages/src/python/debugger.scm index 807d6e865d2..8c241f8cae0 100644 --- a/crates/languages/src/python/debugger.scm +++ b/crates/languages/src/python/debugger.scm @@ -1,43 +1,97 @@ (identifier) @debug-variable (#eq? @debug-variable "self") -(assignment left: (identifier) @debug-variable) -(assignment left: (pattern_list (identifier) @debug-variable)) -(assignment left: (tuple_pattern (identifier) @debug-variable)) +(assignment + left: (identifier) @debug-variable) -(augmented_assignment left: (identifier) @debug-variable) +(assignment + left: (pattern_list + (identifier) @debug-variable)) -(for_statement left: (identifier) @debug-variable) -(for_statement left: (pattern_list (identifier) @debug-variable)) -(for_statement left: (tuple_pattern (identifier) @debug-variable)) +(assignment + left: (tuple_pattern + (identifier) @debug-variable)) -(for_in_clause left: (identifier) @debug-variable) -(for_in_clause left: (pattern_list (identifier) @debug-variable)) -(for_in_clause left: (tuple_pattern (identifier) @debug-variable)) +(augmented_assignment + left: (identifier) @debug-variable) -(as_pattern (identifier) @debug-variable) +(for_statement + left: (identifier) @debug-variable) -(binary_operator left: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) -(binary_operator right: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) -(comparison_operator (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(for_statement + left: (pattern_list + (identifier) @debug-variable)) -(list (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) -(tuple (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) -(set (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(for_statement + left: (tuple_pattern + (identifier) @debug-variable)) -(subscript value: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(for_in_clause + left: (identifier) @debug-variable) -(attribute object: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(for_in_clause + left: (pattern_list + (identifier) @debug-variable)) -(return_statement (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(for_in_clause + left: (tuple_pattern + (identifier) @debug-variable)) -(parenthesized_expression (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(as_pattern + (identifier) @debug-variable) -(argument_list (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(binary_operator + left: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(if_statement condition: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(binary_operator + right: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(while_statement condition: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(comparison_operator + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(list + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(tuple + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(set + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(subscript + value: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(attribute + object: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(return_statement + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(parenthesized_expression + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(argument_list + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(if_statement + condition: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(while_statement + condition: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) (block) @debug-scope + (module) @debug-scope diff --git a/crates/languages/src/python/highlights.scm b/crates/languages/src/python/highlights.scm index f15b3a0e2b0..87283aaa799 100644 --- a/crates/languages/src/python/highlights.scm +++ b/crates/languages/src/python/highlights.scm @@ -1,6 +1,8 @@ ; Identifier naming conventions; these "soft conventions" should stay at the top of the file as they're often overridden (identifier) @variable -(attribute attribute: (identifier) @property) + +(attribute + attribute: (identifier) @property) ; CamelCase for classes ((identifier) @type.class @@ -10,45 +12,56 @@ ((identifier) @constant (#match? @constant "^_*[A-Z][A-Z0-9_]*$")) -(type (identifier) @type) -(generic_type (identifier) @type) +(type + (identifier) @type) + +(generic_type + (identifier) @type) + (comment) @comment + (string) @string + (escape_sequence) @string.escape ; Type alias -(type_alias_statement "type" @keyword) +(type_alias_statement + "type" @keyword) ; TypeVar with constraints in type parameters (type - (tuple (identifier) @type) -) + (tuple + (identifier) @type)) ; Forward references (type - (string) @type -) - + (string) @type) ; Function calls - (call - function: (attribute attribute: (identifier) @function.method.call)) + function: (attribute + attribute: (identifier) @function.method.call)) + (call function: (identifier) @function.call) -(decorator "@" @punctuation.special) +(decorator + "@" @punctuation.special) + (decorator "@" @punctuation.special [ (identifier) @function.decorator - (attribute attribute: (identifier) @function.decorator) - (call function: (identifier) @function.decorator.call) - (call (attribute attribute: (identifier) @function.decorator.call)) + (attribute + attribute: (identifier) @function.decorator) + (call + function: (identifier) @function.decorator.call) + (call + (attribute + attribute: (identifier) @function.decorator.call)) ]) ; Function and class definitions - (function_definition name: (identifier) @function.definition) @@ -69,15 +82,15 @@ ; Function arguments (function_definition parameters: (parameters - [ - (identifier) @variable.parameter; Simple parameters + [ + (identifier) @variable.parameter ; Simple parameters (typed_parameter (identifier) @variable.parameter) ; Typed parameters (default_parameter name: (identifier) @variable.parameter) ; Default parameters (typed_default_parameter name: (identifier) @variable.parameter) ; Typed default parameters - ])) + ])) ; Keyword arguments (call @@ -86,28 +99,30 @@ name: (identifier) @function.kwargs))) ; Class definitions and calling: needs to come after the regex matching above - (class_definition name: (identifier) @type.class.definition) (class_definition superclasses: (argument_list - (identifier) @type.class.inheritance)) + (identifier) @type.class.inheritance)) (call function: (identifier) @type.class.call (#match? @type.class.call "^_*[A-Z][A-Za-z0-9_]*$")) ; Builtins - ((call function: (identifier) @function.builtin) - (#any-of? - @function.builtin - "abs" "all" "any" "ascii" "bin" "bool" "breakpoint" "bytearray" "bytes" "callable" "chr" "classmethod" "compile" "complex" "delattr" "dict" "dir" "divmod" "enumerate" "eval" "exec" "filter" "float" "format" "frozenset" "getattr" "globals" "hasattr" "hash" "help" "hex" "id" "input" "int" "isinstance" "issubclass" "iter" "len" "list" "locals" "map" "max" "memoryview" "min" "next" "object" "oct" "open" "ord" "pow" "print" "property" "range" "repr" "reversed" "round" "set" "setattr" "slice" "sorted" "staticmethod" "str" "sum" "super" "tuple" "type" "vars" "zip" "__import__")) + (#any-of? @function.builtin + "abs" "all" "any" "ascii" "bin" "bool" "breakpoint" "bytearray" "bytes" "callable" "chr" + "classmethod" "compile" "complex" "delattr" "dict" "dir" "divmod" "enumerate" "eval" "exec" + "filter" "float" "format" "frozenset" "getattr" "globals" "hasattr" "hash" "help" "hex" "id" + "input" "int" "isinstance" "issubclass" "iter" "len" "list" "locals" "map" "max" "memoryview" + "min" "next" "object" "oct" "open" "ord" "pow" "print" "property" "range" "repr" "reversed" + "round" "set" "setattr" "slice" "sorted" "staticmethod" "str" "sum" "super" "tuple" "type" + "vars" "zip" "__import__")) ; Literals - [ (true) (false) @@ -124,10 +139,11 @@ ] @number ; Self references - [ - (parameters (identifier) @variable.special) - (attribute (identifier) @variable.special) + (parameters + (identifier) @variable.special) + (attribute + (identifier) @variable.special) (#any-of? @variable.special "self" "cls") ] @@ -152,37 +168,57 @@ ; Docstrings. ([ - (expression_statement (assignment)) + (expression_statement + (assignment)) (type_alias_statement) ] -. (expression_statement (string) @string.doc)+) + . + (expression_statement + (string) @string.doc)+) (module - .(expression_statement (string) @string.doc)+) + . + (expression_statement + (string) @string.doc)+) (class_definition - body: (block .(expression_statement (string) @string.doc)+)) + body: (block + . + (expression_statement + (string) @string.doc)+)) (function_definition "async"? "def" name: (_) (parameters)? - body: (block .(expression_statement (string) @string.doc)+)) + body: (block + . + (expression_statement + (string) @string.doc)+)) (class_definition body: (block - . (comment) @comment* - . (expression_statement (string) @string.doc)+)) + . + (comment) @comment* + . + (expression_statement + (string) @string.doc)+)) (module - . (comment) @comment* - . (expression_statement (string) @string.doc)+) + . + (comment) @comment* + . + (expression_statement + (string) @string.doc)+) (class_definition body: (block - (expression_statement (assignment)) - . (expression_statement (string) @string.doc)+)) + (expression_statement + (assignment)) + . + (expression_statement + (string) @string.doc)+)) (class_definition body: (block @@ -190,9 +226,11 @@ name: (identifier) @function.method.constructor (#eq? @function.method.constructor "__init__") body: (block - (expression_statement (assignment)) - . (expression_statement (string) @string.doc)+)))) - + (expression_statement + (assignment)) + . + (expression_statement + (string) @string.doc)+)))) [ "-" @@ -286,18 +324,23 @@ "lambda" ] @keyword.definition -(decorator (identifier) @attribute.builtin +(decorator + (identifier) @attribute.builtin (#any-of? @attribute.builtin "classmethod" "staticmethod" "property")) ; Builtin types as identifiers [ (call function: (identifier) @type.builtin) - (type (identifier) @type.builtin) - (generic_type (identifier) @type.builtin) + (type + (identifier) @type.builtin) + (generic_type + (identifier) @type.builtin) ; also check if type binary operator left identifier for union types (type (binary_operator left: (identifier) @type.builtin)) - (#any-of? @type.builtin "bool" "bytearray" "bytes" "complex" "dict" "float" "frozenset" "int" "list" "memoryview" "object" "range" "set" "slice" "str" "tuple") + (#any-of? @type.builtin + "bool" "bytearray" "bytes" "complex" "dict" "float" "frozenset" "int" "list" "memoryview" + "object" "range" "set" "slice" "str" "tuple") ] diff --git a/crates/languages/src/python/imports.scm b/crates/languages/src/python/imports.scm index 7a1e2b225b9..26538fee1b4 100644 --- a/crates/languages/src/python/imports.scm +++ b/crates/languages/src/python/imports.scm @@ -1,32 +1,38 @@ (import_statement - name: [ - (dotted_name - ((identifier) @namespace ".")* - (identifier) @namespace .) - (aliased_import - name: (dotted_name - ((identifier) @namespace ".")* - (identifier) @namespace .)) - ]) @wildcard @import + name: [ + (dotted_name + ((identifier) @namespace + ".")* + (identifier) @namespace .) + (aliased_import + name: (dotted_name + ((identifier) @namespace + ".")* + (identifier) @namespace .)) + ]) @wildcard @import (import_from_statement - module_name: [ - (dotted_name - ((identifier) @namespace ".")* - (identifier) @namespace .) - (relative_import - (dotted_name - ((identifier) @namespace ".")* - (identifier) @namespace .)?) - ] - (wildcard_import)? @wildcard - name: [ - (dotted_name - ((identifier) @namespace ".")* - (identifier) @name .) - (aliased_import - name: (dotted_name - ((identifier) @namespace ".")* - (identifier) @name .) - alias: (identifier) @alias) - ]?) @import + module_name: [ + (dotted_name + ((identifier) @namespace + ".")* + (identifier) @namespace .) + (relative_import + (dotted_name + ((identifier) @namespace + ".")* + (identifier) @namespace .)?) + ] + (wildcard_import)? @wildcard + name: [ + (dotted_name + ((identifier) @namespace + ".")* + (identifier) @name .) + (aliased_import + name: (dotted_name + ((identifier) @namespace + ".")* + (identifier) @name .) + alias: (identifier) @alias) + ]?) @import diff --git a/crates/languages/src/python/indents.scm b/crates/languages/src/python/indents.scm index 3d4c1cc9c42..9361aa71587 100644 --- a/crates/languages/src/python/indents.scm +++ b/crates/languages/src/python/indents.scm @@ -1,17 +1,37 @@ -(_ "[" "]" @end) @indent -(_ "{" "}" @end) @indent -(_ "(" ")" @end) @indent +(_ + "[" + "]" @end) @indent + +(_ + "{" + "}" @end) @indent + +(_ + "(" + ")" @end) @indent (function_definition) @start.def + (class_definition) @start.class + (if_statement) @start.if + (for_statement) @start.for + (while_statement) @start.while + (with_statement) @start.with + (match_statement) @start.match + (try_statement) @start.try + (elif_clause) @start.elif + (else_clause) @start.else + (except_clause) @start.except + (finally_clause) @start.finally + (case_clause) @start.case diff --git a/crates/languages/src/python/outline.scm b/crates/languages/src/python/outline.scm index 70beb4e6758..c335eef4654 100644 --- a/crates/languages/src/python/outline.scm +++ b/crates/languages/src/python/outline.scm @@ -1,11 +1,10 @@ (decorator) @annotation (class_definition - "class" @context - name: (identifier) @name - ) @item + "class" @context + name: (identifier) @name) @item (function_definition - "async"? @context - "def" @context - name: (_) @name) @item + "async"? @context + "def" @context + name: (_) @name) @item diff --git a/crates/languages/src/python/overrides.scm b/crates/languages/src/python/overrides.scm index 81fec9a5f57..544e9876f8e 100644 --- a/crates/languages/src/python/overrides.scm +++ b/crates/languages/src/python/overrides.scm @@ -1,2 +1,3 @@ (comment) @comment.inclusive + (string) @string diff --git a/crates/languages/src/python/runnables.scm b/crates/languages/src/python/runnables.scm index 1c7e76d73be..3480d4a8101 100644 --- a/crates/languages/src/python/runnables.scm +++ b/crates/languages/src/python/runnables.scm @@ -1,151 +1,108 @@ ; subclasses of unittest.TestCase or TestCase -( - (class_definition - name: (identifier) @run @_unittest_class_name - superclasses: (argument_list - [(identifier) @_superclass - (attribute (identifier) @_superclass)] - ) - (#eq? @_superclass "TestCase") - ) @_python-unittest-class - (#set! tag python-unittest-class) - ) +((class_definition + name: (identifier) @run @_unittest_class_name + superclasses: (argument_list + [ + (identifier) @_superclass + (attribute + (identifier) @_superclass) + ]) + (#eq? @_superclass "TestCase")) @_python-unittest-class + (#set! tag python-unittest-class)) ; test methods whose names start with `test` in a TestCase -( - (class_definition - name: (identifier) @_unittest_class_name - superclasses: (argument_list - [(identifier) @_superclass - (attribute (identifier) @_superclass)] - ) - (#eq? @_superclass "TestCase") - body: (block - (function_definition - name: (identifier) @run @_unittest_method_name - (#match? @_unittest_method_name "^test.*") - ) @_python-unittest-method - (#set! tag python-unittest-method) - ) - ) - ) +(class_definition + name: (identifier) @_unittest_class_name + superclasses: (argument_list + [ + (identifier) @_superclass + (attribute + (identifier) @_superclass) + ]) + (#eq? @_superclass "TestCase") + body: (block + (function_definition + name: (identifier) @run @_unittest_method_name + (#match? @_unittest_method_name "^test.*")) @_python-unittest-method + (#set! tag python-unittest-method))) ; pytest functions -( - (module - (function_definition - name: (identifier) @run @_pytest_method_name - (#match? @_pytest_method_name "^test_") - ) @_python-pytest-method - ) - (#set! tag python-pytest-method) - ) +((module + (function_definition + name: (identifier) @run @_pytest_method_name + (#match? @_pytest_method_name "^test_")) @_python-pytest-method) + (#set! tag python-pytest-method)) ; decorated pytest functions -( - (module - (decorated_definition - (decorator)+ @_decorator - definition: (function_definition - name: (identifier) @run @_pytest_method_name - (#match? @_pytest_method_name "^test_") - ) - ) @_python-pytest-method - ) - (#set! tag python-pytest-method) - ) - +((module + (decorated_definition + (decorator)+ @_decorator + definition: (function_definition + name: (identifier) @run @_pytest_method_name + (#match? @_pytest_method_name "^test_"))) @_python-pytest-method) + (#set! tag python-pytest-method)) ; pytest classes -( - (module - (class_definition - name: (identifier) @run @_pytest_class_name - (#match? @_pytest_class_name "^Test") - ) - (#set! tag python-pytest-class) - ) - ) - +(module + (class_definition + name: (identifier) @run @_pytest_class_name + (#match? @_pytest_class_name "^Test")) + (#set! tag python-pytest-class)) ; decorated pytest classes -( - (module - (decorated_definition - (decorator)+ @_decorator - definition: (class_definition - name: (identifier) @run @_pytest_class_name - (#match? @_pytest_class_name "^Test") - ) - ) - (#set! tag python-pytest-class) - ) - ) - +(module + (decorated_definition + (decorator)+ @_decorator + definition: (class_definition + name: (identifier) @run @_pytest_class_name + (#match? @_pytest_class_name "^Test"))) + (#set! tag python-pytest-class)) ; pytest class methods -( - (module - (class_definition - name: (identifier) @_pytest_class_name - (#match? @_pytest_class_name "^Test") - body: (block - [(decorated_definition - (decorator)+ @_decorator - definition: (function_definition - name: (identifier) @run @_pytest_method_name - (#match? @_pytest_method_name "^test_") - ) - ) - (function_definition - name: (identifier) @run @_pytest_method_name - (#match? @_pytest_method_name "^test") - ) - ] @_python-pytest-method) - (#set! tag python-pytest-method) - ) - ) - ) +(module + (class_definition + name: (identifier) @_pytest_class_name + (#match? @_pytest_class_name "^Test") + body: (block + [ + (decorated_definition + (decorator)+ @_decorator + definition: (function_definition + name: (identifier) @run @_pytest_method_name + (#match? @_pytest_method_name "^test_"))) + (function_definition + name: (identifier) @run @_pytest_method_name + (#match? @_pytest_method_name "^test")) + ] @_python-pytest-method) + (#set! tag python-pytest-method))) ; decorated pytest class methods -( - (module - (decorated_definition +(module + (decorated_definition + (decorator)+ @_decorator + definition: (class_definition + name: (identifier) @_pytest_class_name + (#match? @_pytest_class_name "^Test") + body: (block + [ + (decorated_definition (decorator)+ @_decorator - definition: (class_definition - name: (identifier) @_pytest_class_name - (#match? @_pytest_class_name "^Test") - body: (block - [(decorated_definition - (decorator)+ @_decorator - definition: (function_definition - name: (identifier) @run @_pytest_method_name - (#match? @_pytest_method_name "^test_") - ) - ) - (function_definition - name: (identifier) @run @_pytest_method_name - (#match? @_pytest_method_name "^test") - ) - ] @_python-pytest-method) - (#set! tag python-pytest-method) - ) - ) - ) - ) + definition: (function_definition + name: (identifier) @run @_pytest_method_name + (#match? @_pytest_method_name "^test_"))) + (function_definition + name: (identifier) @run @_pytest_method_name + (#match? @_pytest_method_name "^test")) + ] @_python-pytest-method) + (#set! tag python-pytest-method)))) ; module main method -( - (module - (if_statement - condition: (comparison_operator - (identifier) @run @_lhs - operators: "==" - (string) @_rhs - ) - (#eq? @_lhs "__name__") - (#match? @_rhs "^[\"']__main__[\"']$") - (#set! tag python-module-main-method) - ) - ) - ) +(module + (if_statement + condition: (comparison_operator + (identifier) @run @_lhs + operators: "==" + (string) @_rhs) + (#eq? @_lhs "__name__") + (#match? @_rhs "^[\"']__main__[\"']$") + (#set! tag python-module-main-method))) diff --git a/crates/languages/src/regex/brackets.scm b/crates/languages/src/regex/brackets.scm index 191fd9c084a..3779d8514bd 100644 --- a/crates/languages/src/regex/brackets.scm +++ b/crates/languages/src/regex/brackets.scm @@ -1,3 +1,8 @@ -("(" @open ")" @close) -("[" @open "]" @close) -("{" @open "}" @close) +("(" @open + ")" @close) + +("[" @open + "]" @close) + +("{" @open + "}" @close) diff --git a/crates/languages/src/regex/highlights.scm b/crates/languages/src/regex/highlights.scm index b5adecf4729..b0df4b98be0 100644 --- a/crates/languages/src/regex/highlights.scm +++ b/crates/languages/src/regex/highlights.scm @@ -51,5 +51,6 @@ (character_class [ "^" @operator.regex - (class_range "-" @operator.regex) + (class_range + "-" @operator.regex) ]) diff --git a/crates/languages/src/rust/brackets.scm b/crates/languages/src/rust/brackets.scm index 7a35adb1002..9d78bb11116 100644 --- a/crates/languages/src/rust/brackets.scm +++ b/crates/languages/src/rust/brackets.scm @@ -1,7 +1,23 @@ -("(" @open ")" @close) -("[" @open "]" @close) -("{" @open "}" @close) -("<" @open ">" @close) -(closure_parameters "|" @open "|" @close) -(("\"" @open "\"" @close) (#set! rainbow.exclude)) -(("'" @open "'" @close) (#set! rainbow.exclude)) +("(" @open + ")" @close) + +("[" @open + "]" @close) + +("{" @open + "}" @close) + +("<" @open + ">" @close) + +(closure_parameters + "|" @open + "|" @close) + +(("\"" @open + "\"" @close) + (#set! rainbow.exclude)) + +(("'" @open + "'" @close) + (#set! rainbow.exclude)) diff --git a/crates/languages/src/rust/debugger.scm b/crates/languages/src/rust/debugger.scm index 5347413f698..3c7195796fe 100644 --- a/crates/languages/src/rust/debugger.scm +++ b/crates/languages/src/rust/debugger.scm @@ -1,50 +1,85 @@ (metavariable) @debug-variable -(parameter (identifier) @debug-variable) +(parameter + (identifier) @debug-variable) (self) @debug-variable -(static_item (identifier) @debug-variable) -(const_item (identifier) @debug-variable) +(static_item + (identifier) @debug-variable) -(let_declaration pattern: (identifier) @debug-variable) +(const_item + (identifier) @debug-variable) -(let_condition (identifier) @debug-variable) +(let_declaration + pattern: (identifier) @debug-variable) -(match_arm (identifier) @debug-variable) +(let_condition + (identifier) @debug-variable) -(for_expression (identifier) @debug-variable) +(match_arm + (identifier) @debug-variable) -(closure_parameters (identifier) @debug-variable) +(for_expression + (identifier) @debug-variable) -(assignment_expression (identifier) @debug-variable) +(closure_parameters + (identifier) @debug-variable) -(field_expression (identifier) @debug-variable) +(assignment_expression + (identifier) @debug-variable) -(binary_expression (identifier) @debug-variable +(field_expression + (identifier) @debug-variable) + +(binary_expression + (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) -(reference_expression (identifier) @debug-variable +(reference_expression + (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) -(array_expression (identifier) @debug-variable) -(tuple_expression (identifier) @debug-variable) -(return_expression (identifier) @debug-variable) -(await_expression (identifier) @debug-variable) -(try_expression (identifier) @debug-variable) -(index_expression (identifier) @debug-variable) -(range_expression (identifier) @debug-variable) -(unary_expression (identifier) @debug-variable) +(array_expression + (identifier) @debug-variable) -(if_expression (identifier) @debug-variable) -(while_expression (identifier) @debug-variable) +(tuple_expression + (identifier) @debug-variable) -(parenthesized_expression (identifier) @debug-variable) +(return_expression + (identifier) @debug-variable) -(arguments (identifier) @debug-variable +(await_expression + (identifier) @debug-variable) + +(try_expression + (identifier) @debug-variable) + +(index_expression + (identifier) @debug-variable) + +(range_expression + (identifier) @debug-variable) + +(unary_expression + (identifier) @debug-variable) + +(if_expression + (identifier) @debug-variable) + +(while_expression + (identifier) @debug-variable) + +(parenthesized_expression + (identifier) @debug-variable) + +(arguments + (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) -(macro_invocation (token_tree (identifier) @debug-variable - (#not-match? @debug-variable "^[A-Z]"))) +(macro_invocation + (token_tree + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]"))) (block) @debug-scope diff --git a/crates/languages/src/rust/highlights.scm b/crates/languages/src/rust/highlights.scm index 82008d70153..57e5ed3f704 100644 --- a/crates/languages/src/rust/highlights.scm +++ b/crates/languages/src/rust/highlights.scm @@ -1,17 +1,33 @@ (identifier) @variable + (metavariable) @variable + (type_identifier) @type + (fragment_specifier) @type + (primitive_type) @type.builtin + (self) @variable.special + (field_identifier) @property + (shorthand_field_identifier) @property -(trait_item name: (type_identifier) @type.interface) -(impl_item trait: (type_identifier) @type.interface) -(abstract_type trait: (type_identifier) @type.interface) -(dynamic_type trait: (type_identifier) @type.interface) -(trait_bounds (type_identifier) @type.interface) +(trait_item + name: (type_identifier) @type.interface) + +(impl_item + trait: (type_identifier) @type.interface) + +(abstract_type + trait: (type_identifier) @type.interface) + +(dynamic_type + trait: (type_identifier) @type.interface) + +(trait_bounds + (type_identifier) @type.interface) (call_expression function: [ @@ -31,8 +47,11 @@ field: (field_identifier) @function.method) ]) -(function_item name: (identifier) @function.definition) -(function_signature_item name: (identifier) @function.definition) +(function_item + name: (identifier) @function.definition) + +(function_signature_item + name: (identifier) @function.definition) (macro_invocation macro: [ @@ -48,17 +67,17 @@ name: (identifier) @function.special.definition) ; Identifier conventions - ; Assume uppercase names are types/enum-constructors ((identifier) @type - (#match? @type "^[A-Z]")) + (#match? @type "^[A-Z]")) ; Assume all-caps names are constants ((identifier) @constant - (#match? @constant "^_*[A-Z][A-Z\\d_]*$")) + (#match? @constant "^_*[A-Z][A-Z\\d_]*$")) ; Ensure enum variants are highlighted correctly regardless of naming convention -(enum_variant name: (identifier) @type) +(enum_variant + name: (identifier) @type) [ "(" @@ -81,9 +100,7 @@ "::" ] @punctuation.delimiter -[ - "#" -] @punctuation.special +"#" @punctuation.special [ "as" @@ -131,7 +148,7 @@ ] @keyword.control (for_expression - ("for" @keyword.control)) + "for" @keyword.control) [ (string_literal) @@ -154,8 +171,10 @@ ] @comment [ - (line_comment (doc_comment)) - (block_comment (doc_comment)) + (line_comment + (doc_comment)) + (block_comment + (doc_comment)) ] @comment.doc [ @@ -198,25 +217,44 @@ ] @operator ; Avoid highlighting these as operators when used in doc comments. -(unary_expression "!" @operator) +(unary_expression + "!" @operator) + operator: "/" @operator (lifetime "'" @lifetime (identifier) @lifetime) -(parameter (identifier) @variable.parameter) +(parameter + (identifier) @variable.parameter) -(attribute_item (attribute [ - (identifier) @attribute - (scoped_identifier name: (identifier) @attribute) - (token_tree (identifier) @attribute (#match? @attribute "^[a-z\\d_]*$")) - (token_tree (identifier) @none "::" (#match? @none "^[a-z\\d_]*$")) -])) +(attribute_item + (attribute + [ + (identifier) @attribute + (scoped_identifier + name: (identifier) @attribute) + (token_tree + (identifier) @attribute + (#match? @attribute "^[a-z\\d_]*$")) + (token_tree + (identifier) @none + "::" + (#match? @none "^[a-z\\d_]*$")) + ])) -(inner_attribute_item (attribute [ - (identifier) @attribute - (scoped_identifier name: (identifier) @attribute) - (token_tree (identifier) @attribute (#match? @attribute "^[a-z\\d_]*$")) - (token_tree (identifier) @none "::" (#match? @none "^[a-z\\d_]*$")) -])) +(inner_attribute_item + (attribute + [ + (identifier) @attribute + (scoped_identifier + name: (identifier) @attribute) + (token_tree + (identifier) @attribute + (#match? @attribute "^[a-z\\d_]*$")) + (token_tree + (identifier) @none + "::" + (#match? @none "^[a-z\\d_]*$")) + ])) diff --git a/crates/languages/src/rust/imports.scm b/crates/languages/src/rust/imports.scm index 3ce6a4f0735..2c368523d63 100644 --- a/crates/languages/src/rust/imports.scm +++ b/crates/languages/src/rust/imports.scm @@ -1,27 +1,29 @@ (use_declaration) @import (scoped_use_list - path: (_) @namespace - list: (_) @list) + path: (_) @namespace + list: (_) @list) (scoped_identifier + path: (_) @namespace + name: (identifier) @name) + +(use_list + (identifier) @name) + +(use_declaration + (identifier) @name) + +(use_as_clause + path: (scoped_identifier path: (_) @namespace - name: (identifier) @name) - -(use_list (identifier) @name) - -(use_declaration (identifier) @name) + name: (_) @name) + alias: (_) @alias) (use_as_clause - path: (scoped_identifier - path: (_) @namespace - name: (_) @name) - alias: (_) @alias) - -(use_as_clause - path: (identifier) @name - alias: (_) @alias) + path: (identifier) @name + alias: (_) @alias) (use_wildcard - (_)? @namespace - "*" @wildcard) + (_)? @namespace + "*" @wildcard) diff --git a/crates/languages/src/rust/indents.scm b/crates/languages/src/rust/indents.scm index 9ab6b029083..b4ef2ebcd78 100644 --- a/crates/languages/src/rust/indents.scm +++ b/crates/languages/src/rust/indents.scm @@ -1,14 +1,26 @@ [ - ((where_clause) _ @end) - (field_expression) - (call_expression) - (assignment_expression) - (let_declaration) - (let_chain) - (await_expression) + ((where_clause) + _ @end) + (field_expression) + (call_expression) + (assignment_expression) + (let_declaration) + (let_chain) + (await_expression) ] @indent -(_ "[" "]" @end) @indent -(_ "<" ">" @end) @indent -(_ "{" "}" @end) @indent -(_ "(" ")" @end) @indent +(_ + "[" + "]" @end) @indent + +(_ + "<" + ">" @end) @indent + +(_ + "{" + "}" @end) @indent + +(_ + "(" + ")" @end) @indent diff --git a/crates/languages/src/rust/injections.scm b/crates/languages/src/rust/injections.scm index 88df78d793c..89d839282d3 100644 --- a/crates/languages/src/rust/injections.scm +++ b/crates/languages/src/rust/injections.scm @@ -1,64 +1,67 @@ ([ - (line_comment) - (block_comment) + (line_comment) + (block_comment) ] @injection.content - (#set! injection.language "comment")) + (#set! injection.language "comment")) (macro_invocation - macro: [ - ((identifier) @_macro_name) - (scoped_identifier (identifier) @_macro_name .) - ] - (#not-any-of? @_macro_name "view" "html") - (token_tree) @injection.content - (#set! injection.language "rust")) + macro: [ + (identifier) @_macro_name + (scoped_identifier + (identifier) @_macro_name .) + ] + (#not-any-of? @_macro_name "view" "html") + (token_tree) @injection.content + (#set! injection.language "rust")) ; we need a better way for the leptos extension to declare that ; it wants to inject inside of rust, instead of modifying the rust ; injections to support leptos injections (macro_invocation - macro: [ - ((identifier) @_macro_name) - (scoped_identifier (identifier) @_macro_name .) - ] - (#any-of? @_macro_name "view" "html") - (token_tree) @injection.content - (#set! injection.language "rstml") - ) + macro: [ + (identifier) @_macro_name + (scoped_identifier + (identifier) @_macro_name .) + ] + (#any-of? @_macro_name "view" "html") + (token_tree) @injection.content + (#set! injection.language "rstml")) (macro_invocation - macro: [ - ((identifier) @_macro_name) - (scoped_identifier (identifier) @_macro_name .) - ] - (#any-of? @_macro_name "sql") - (_) @injection.content - (#set! injection.language "sql") - ) + macro: [ + (identifier) @_macro_name + (scoped_identifier + (identifier) @_macro_name .) + ] + (#any-of? @_macro_name "sql") + (_) @injection.content + (#set! injection.language "sql")) ; lazy_regex (macro_invocation - macro: [ - ((identifier) @_macro_name) - (scoped_identifier (identifier) @_macro_name .) - ] - (token_tree [ - (string_literal (string_content) @injection.content) - (raw_string_literal (string_content) @injection.content) + macro: [ + (identifier) @_macro_name + (scoped_identifier + (identifier) @_macro_name .) + ] + (token_tree + [ + (string_literal + (string_content) @injection.content) + (raw_string_literal + (string_content) @injection.content) ]) - (#set! injection.language "regex") - (#any-of? @_macro_name "regex" "bytes_regex") -) + (#set! injection.language "regex") + (#any-of? @_macro_name "regex" "bytes_regex")) (call_expression - function: (scoped_identifier) @_fn_path - arguments: (arguments - [ - (string_literal (string_content) @injection.content) - (raw_string_literal (string_content) @injection.content) - ] - ) - - (#match? @_fn_path ".*Regex(Builder)?::new") - (#set! injection.language "regex") -) + function: (scoped_identifier) @_fn_path + arguments: (arguments + [ + (string_literal + (string_content) @injection.content) + (raw_string_literal + (string_content) @injection.content) + ]) + (#match? @_fn_path ".*Regex(Builder)?::new") + (#set! injection.language "regex")) diff --git a/crates/languages/src/rust/outline.scm b/crates/languages/src/rust/outline.scm index a99f53dd2b3..03ecb99facd 100644 --- a/crates/languages/src/rust/outline.scm +++ b/crates/languages/src/rust/outline.scm @@ -1,73 +1,81 @@ (attribute_item) @annotation + (line_comment) @annotation (struct_item - (visibility_modifier)? @context - "struct" @context - name: (_) @name) @item + (visibility_modifier)? @context + "struct" @context + name: (_) @name) @item (enum_item - (visibility_modifier)? @context - "enum" @context - name: (_) @name) @item + (visibility_modifier)? @context + "enum" @context + name: (_) @name) @item (enum_variant - (visibility_modifier)? @context - name: (_) @name) @item + (visibility_modifier)? @context + name: (_) @name) @item (impl_item - "impl" @context - trait: (_)? @name - "for"? @context - type: (_) @name - body: (_ . "{" @open "}" @close .)) @item + "impl" @context + trait: (_)? @name + "for"? @context + type: (_) @name + body: (_ + . + "{" @open + "}" @close .)) @item (trait_item - (visibility_modifier)? @context - "trait" @context - name: (_) @name) @item + (visibility_modifier)? @context + "trait" @context + name: (_) @name) @item (function_item - (visibility_modifier)? @context - (function_modifiers)? @context - "fn" @context - name: (_) @name - body: (_ . "{" @open "}" @close .)) @item + (visibility_modifier)? @context + (function_modifiers)? @context + "fn" @context + name: (_) @name + body: (_ + . + "{" @open + "}" @close .)) @item (function_signature_item - (visibility_modifier)? @context - (function_modifiers)? @context - "fn" @context - name: (_) @name) @item + (visibility_modifier)? @context + (function_modifiers)? @context + "fn" @context + name: (_) @name) @item (macro_definition - . "macro_rules!" @context - name: (_) @name) @item + . + "macro_rules!" @context + name: (_) @name) @item (mod_item - (visibility_modifier)? @context - "mod" @context - name: (_) @name) @item + (visibility_modifier)? @context + "mod" @context + name: (_) @name) @item (type_item - (visibility_modifier)? @context - "type" @context - name: (_) @name) @item + (visibility_modifier)? @context + "type" @context + name: (_) @name) @item (associated_type - "type" @context - name: (_) @name) @item + "type" @context + name: (_) @name) @item (const_item - (visibility_modifier)? @context - "const" @context - name: (_) @name) @item + (visibility_modifier)? @context + "const" @context + name: (_) @name) @item (static_item - (visibility_modifier)? @context - "static" @context - name: (_) @name) @item + (visibility_modifier)? @context + "static" @context + name: (_) @name) @item (field_declaration - (visibility_modifier)? @context - name: (_) @name) @item + (visibility_modifier)? @context + name: (_) @name) @item diff --git a/crates/languages/src/rust/overrides.scm b/crates/languages/src/rust/overrides.scm index 91fa6139d38..039425a91d5 100644 --- a/crates/languages/src/rust/overrides.scm +++ b/crates/languages/src/rust/overrides.scm @@ -2,6 +2,7 @@ (string_literal) (raw_string_literal) ] @string + [ (line_comment) (block_comment) diff --git a/crates/languages/src/rust/runnables.scm b/crates/languages/src/rust/runnables.scm index 7c157161442..ef7050397df 100644 --- a/crates/languages/src/rust/runnables.scm +++ b/crates/languages/src/rust/runnables.scm @@ -1,92 +1,75 @@ ; Rust mod test -( - (attribute_item (attribute - ( - (identifier) @_attribute) - arguments: ( - (token_tree (identifier) @_test) - (#eq? @_test "test") - ) - ) - (#eq? @_attribute "cfg") - ) - . - (mod_item - name: (_) @run - ) - (#set! tag rust-mod-test) -) +((attribute_item + (attribute + (identifier) @_attribute + arguments: ((token_tree + (identifier) @_test) + (#eq? @_test "test"))) + (#eq? @_attribute "cfg")) + . + (mod_item + name: (_) @run) + (#set! tag rust-mod-test)) ; Rust test -( - ( - (attribute_item (attribute - [((identifier) @_attribute) - (scoped_identifier (identifier) @_attribute) - ]) - (#match? @_attribute "test") - ) @_start - . - (attribute_item) * - . - [(line_comment) (block_comment)] * - . - (function_item - name: (_) @run @_test_name - body: _ - ) @_end - ) - (#set! tag rust-test) -) +(((attribute_item + (attribute + [ + (identifier) @_attribute + (scoped_identifier + (identifier) @_attribute) + ]) + (#match? @_attribute "test")) @_start + . + (attribute_item)* + . + [ + (line_comment) + (block_comment) + ]* + . + (function_item + name: (_) @run @_test_name + body: _) @_end) + (#set! tag rust-test)) ; Rust doc test -( - ( - (line_comment) * - (line_comment - doc: (_) @_comment_content - ) @_start @run - (#match? @_comment_content "```") - . - (line_comment) * - . - (line_comment - doc: (_) @_end_comment_content - ) @_end_code_block - (#match? @_end_comment_content "```") - . - (line_comment) * - (attribute_item) * - . - [(function_item - name: (_) @_doc_test_name - body: _ - ) (function_signature_item - name: (_) @_doc_test_name - ) (struct_item - name: (_) @_doc_test_name - ) (enum_item - name: (_) @_doc_test_name - body: _ - ) ( - (attribute_item) ? - (macro_definition - name: (_) @_doc_test_name) - ) (mod_item - name: (_) @_doc_test_name - )] @_end - ) - (#set! tag rust-doc-test) -) +(((line_comment)* + (line_comment + doc: (_) @_comment_content) @_start @run + (#match? @_comment_content "```") + . + (line_comment)* + . + (line_comment + doc: (_) @_end_comment_content) @_end_code_block + (#match? @_end_comment_content "```") + . + (line_comment)* + (attribute_item)* + . + [ + (function_item + name: (_) @_doc_test_name + body: _) + (function_signature_item + name: (_) @_doc_test_name) + (struct_item + name: (_) @_doc_test_name) + (enum_item + name: (_) @_doc_test_name + body: _) + ((attribute_item)? + (macro_definition + name: (_) @_doc_test_name)) + (mod_item + name: (_) @_doc_test_name) + ] @_end) + (#set! tag rust-doc-test)) ; Rust main function -( - ( - (function_item - name: (_) @run - body: _ - ) @_rust_main_function_end - (#eq? @run "main") - ) - (#set! tag rust-main) -) +(((function_item + name: (_) @run + body: _) @_rust_main_function_end + (#eq? @run "main")) + (#set! tag rust-main)) diff --git a/crates/languages/src/rust/textobjects.scm b/crates/languages/src/rust/textobjects.scm index 4e7e7fa0cd1..97a90a54f80 100644 --- a/crates/languages/src/rust/textobjects.scm +++ b/crates/languages/src/rust/textobjects.scm @@ -2,50 +2,73 @@ (function_signature_item) @function.around (function_item - body: (_ - "{" - (_)* @function.inside - "}" )) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around ; classes (struct_item - body: (_ - ["{" "("]? - [(_) ","?]* @class.inside - ["}" ")"]? )) @class.around + body: (_ + [ + "{" + "(" + ]? + [ + (_) + ","? + ]* @class.inside + [ + "}" + ")" + ]?)) @class.around (enum_item - body: (_ - "{" - [(_) ","?]* @class.inside - "}" )) @class.around + body: (_ + "{" + [ + (_) + ","? + ]* @class.inside + "}")) @class.around (union_item - body: (_ - "{" - [(_) ","?]* @class.inside - "}" )) @class.around + body: (_ + "{" + [ + (_) + ","? + ]* @class.inside + "}")) @class.around (trait_item - body: (_ - "{" - [(_) ","?]* @class.inside - "}" )) @class.around + body: (_ + "{" + [ + (_) + ","? + ]* @class.inside + "}")) @class.around (impl_item - body: (_ - "{" - [(_) ","?]* @class.inside - "}" )) @class.around + body: (_ + "{" + [ + (_) + ","? + ]* @class.inside + "}")) @class.around (mod_item - body: (_ - "{" - [(_) ","?]* @class.inside - "}" )) @class.around + body: (_ + "{" + [ + (_) + ","? + ]* @class.inside + "}")) @class.around ; comments - (line_comment)+ @comment.around (block_comment) @comment.around diff --git a/crates/languages/src/tsx/brackets.scm b/crates/languages/src/tsx/brackets.scm index 0e98b78036b..d72fcb26005 100644 --- a/crates/languages/src/tsx/brackets.scm +++ b/crates/languages/src/tsx/brackets.scm @@ -1,11 +1,35 @@ -("(" @open ")" @close) -("[" @open "]" @close) -("{" @open "}" @close) -("<" @open ">" @close) -("<" @open "/>" @close) -("" @close) -(("\"" @open "\"" @close) (#set! rainbow.exclude)) -(("'" @open "'" @close) (#set! rainbow.exclude)) -(("`" @open "`" @close) (#set! rainbow.exclude)) +("(" @open + ")" @close) -((jsx_element (jsx_opening_element) @open (jsx_closing_element) @close) (#set! newline.only) (#set! rainbow.exclude)) +("[" @open + "]" @close) + +("{" @open + "}" @close) + +("<" @open + ">" @close) + +("<" @open + "/>" @close) + +("" @close) + +(("\"" @open + "\"" @close) + (#set! rainbow.exclude)) + +(("'" @open + "'" @close) + (#set! rainbow.exclude)) + +(("`" @open + "`" @close) + (#set! rainbow.exclude)) + +((jsx_element + (jsx_opening_element) @open + (jsx_closing_element) @close) + (#set! newline.only) + (#set! rainbow.exclude)) diff --git a/crates/languages/src/tsx/debugger.scm b/crates/languages/src/tsx/debugger.scm index 3e73dc839e4..5a6ab143d0d 100644 --- a/crates/languages/src/tsx/debugger.scm +++ b/crates/languages/src/tsx/debugger.scm @@ -1,25 +1,55 @@ -(lexical_declaration (variable_declarator name: (identifier) @debug-variable)) +(lexical_declaration + (variable_declarator + name: (identifier) @debug-variable)) -(for_in_statement left: (identifier) @debug-variable) -(for_statement initializer: (lexical_declaration (variable_declarator name: (identifier) @debug-variable))) +(for_in_statement + left: (identifier) @debug-variable) -(binary_expression left: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) -(binary_expression right: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(for_statement + initializer: (lexical_declaration + (variable_declarator + name: (identifier) @debug-variable))) -(unary_expression argument: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) -(update_expression argument: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(binary_expression + left: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(return_statement (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(binary_expression + right: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(parenthesized_expression (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(unary_expression + argument: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(jsx_expression (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(update_expression + argument: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(array (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(return_statement + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(pair value: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(parenthesized_expression + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(member_expression object: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(jsx_expression + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(array + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(pair + value: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(member_expression + object: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) (statement_block) @debug-scope + (program) @debug-scope diff --git a/crates/languages/src/tsx/highlights.scm b/crates/languages/src/tsx/highlights.scm index a96bf96281f..056956199ef 100644 --- a/crates/languages/src/tsx/highlights.scm +++ b/crates/languages/src/tsx/highlights.scm @@ -1,56 +1,33 @@ ; Variables - (identifier) @variable (call_expression function: (member_expression object: (identifier) @type - (#any-of? - @type - "Promise" - "Array" - "Object" - "Map" - "Set" - "WeakMap" - "WeakSet" - "Date" - "Error" - "TypeError" - "RangeError" - "SyntaxError" - "ReferenceError" - "EvalError" - "URIError" - "RegExp" - "Function" - "Number" - "String" - "Boolean" - "Symbol" - "BigInt" - "Proxy" - "ArrayBuffer" - "DataView" - ) - ) -) + (#any-of? @type + "Promise" "Array" "Object" "Map" "Set" "WeakMap" "WeakSet" "Date" "Error" "TypeError" + "RangeError" "SyntaxError" "ReferenceError" "EvalError" "URIError" "RegExp" "Function" + "Number" "String" "Boolean" "Symbol" "BigInt" "Proxy" "ArrayBuffer" "DataView"))) ; Properties - (property_identifier) @property + (shorthand_property_identifier) @property + (shorthand_property_identifier_pattern) @property + (private_property_identifier) @property ; Function and method calls - (call_expression function: (identifier) @function) (call_expression function: (member_expression - property: [(property_identifier) (private_property_identifier)] @function.method)) + property: [ + (property_identifier) + (private_property_identifier) + ] @function.method)) (new_expression constructor: (identifier) @type) @@ -59,36 +36,58 @@ module: (identifier) @type) ; Function and method definitions - (function_expression name: (identifier) @function) + (function_declaration name: (identifier) @function) + (method_definition - name: [(property_identifier) (private_property_identifier)] @function.method) + name: [ + (property_identifier) + (private_property_identifier) + ] @function.method) + (method_definition - name: (property_identifier) @constructor - (#eq? @constructor "constructor")) + name: (property_identifier) @constructor + (#eq? @constructor "constructor")) (pair - key: [(property_identifier) (private_property_identifier)] @function.method - value: [(function_expression) (arrow_function)]) + key: [ + (property_identifier) + (private_property_identifier) + ] @function.method + value: [ + (function_expression) + (arrow_function) + ]) (assignment_expression left: (member_expression - property: [(property_identifier) (private_property_identifier)] @function.method) - right: [(function_expression) (arrow_function)]) + property: [ + (property_identifier) + (private_property_identifier) + ] @function.method) + right: [ + (function_expression) + (arrow_function) + ]) (variable_declarator name: (identifier) @function - value: [(function_expression) (arrow_function)]) + value: [ + (function_expression) + (arrow_function) + ]) (assignment_expression left: (identifier) @function - right: [(function_expression) (arrow_function)]) + right: [ + (function_expression) + (arrow_function) + ]) ; Parameters - (required_parameter (identifier) @variable.parameter) @@ -122,9 +121,10 @@ name: (identifier) @variable.parameter) ; Special identifiers - (type_annotation) @type + (type_identifier) @type + (predefined_type) @type.builtin (type_alias_declaration @@ -153,12 +153,12 @@ (identifier) (shorthand_property_identifier) (shorthand_property_identifier_pattern) - ] @constant - (#match? @constant "^_*[A-Z_][A-Z\\d_]*$")) +] @constant + (#match? @constant "^_*[A-Z_][A-Z\\d_]*$")) ; Literals - (this) @variable.special + (super) @variable.special [ @@ -182,11 +182,12 @@ (escape_sequence) @string.escape (regex) @string.regex + (regex_flags) @keyword.operator.regex + (number) @number ; Tokens - [ ";" "?." @@ -244,7 +245,8 @@ "..." ] @operator -(regex "/" @string.regex) +(regex + "/" @string.regex) [ "(" @@ -253,14 +255,13 @@ "]" "{" "}" -] @punctuation.bracket +] @punctuation.bracket (ternary_expression [ "?" ":" - ] @operator -) + ] @operator) ; Keywords [ @@ -334,7 +335,8 @@ "yield" ] @keyword.control -(switch_default "default" @keyword.control) +(switch_default + "default" @keyword.control) (template_substitution "${" @punctuation.special @@ -352,31 +354,32 @@ "<" @punctuation.bracket ">" @punctuation.bracket) -(decorator "@" @punctuation.special) +(decorator + "@" @punctuation.special) (union_type - ("|") @punctuation.special) + "|" @punctuation.special) (intersection_type - ("&") @punctuation.special) + "&" @punctuation.special) (type_annotation - (":") @punctuation.special) + ":" @punctuation.special) (index_signature - (":") @punctuation.special) + ":" @punctuation.special) (type_predicate_annotation - (":") @punctuation.special) + ":" @punctuation.special) (public_field_definition - ("?") @punctuation.special) + "?" @punctuation.special) (property_signature - ("?") @punctuation.special) + "?" @punctuation.special) (method_signature - ("?") @punctuation.special) + "?" @punctuation.special) (optional_parameter ([ @@ -384,44 +387,66 @@ ":" ]) @punctuation.special) - - (jsx_opening_element [ (identifier) @type (member_expression object: (identifier) @type - property: (property_identifier) @type - ) - ] -) + property: (property_identifier) @type) + ]) + (jsx_closing_element [ (identifier) @type (member_expression object: (identifier) @type - property: (property_identifier) @type - ) - ] -) + property: (property_identifier) @type) + ]) + (jsx_self_closing_element [ (identifier) @type (member_expression object: (identifier) @type - property: (property_identifier) @type - ) - ] -) + property: (property_identifier) @type) + ]) -(jsx_opening_element (identifier) @tag.jsx (#match? @tag.jsx "^[a-z][^.]*$")) -(jsx_closing_element (identifier) @tag.jsx (#match? @tag.jsx "^[a-z][^.]*$")) -(jsx_self_closing_element (identifier) @tag.jsx (#match? @tag.jsx "^[a-z][^.]*$")) +(jsx_opening_element + (identifier) @tag.jsx + (#match? @tag.jsx "^[a-z][^.]*$")) + +(jsx_closing_element + (identifier) @tag.jsx + (#match? @tag.jsx "^[a-z][^.]*$")) + +(jsx_self_closing_element + (identifier) @tag.jsx + (#match? @tag.jsx "^[a-z][^.]*$")) + +(jsx_attribute + (property_identifier) @attribute.jsx) + +(jsx_opening_element + ([ + "<" + ">" + ]) @punctuation.bracket.jsx) + +(jsx_closing_element + ([ + "" + ]) @punctuation.bracket.jsx) + +(jsx_self_closing_element + ([ + "<" + "/>" + ]) @punctuation.bracket.jsx) + +(jsx_attribute + "=" @punctuation.delimiter.jsx) -(jsx_attribute (property_identifier) @attribute.jsx) -(jsx_opening_element (["<" ">"]) @punctuation.bracket.jsx) -(jsx_closing_element ([""]) @punctuation.bracket.jsx) -(jsx_self_closing_element (["<" "/>"]) @punctuation.bracket.jsx) -(jsx_attribute "=" @punctuation.delimiter.jsx) (jsx_text) @text.jsx + (html_character_reference) @string.special diff --git a/crates/languages/src/tsx/imports.scm b/crates/languages/src/tsx/imports.scm index e26b97aeef9..0e688d53fb6 100644 --- a/crates/languages/src/tsx/imports.scm +++ b/crates/languages/src/tsx/imports.scm @@ -1,14 +1,16 @@ (import_statement - import_clause: (import_clause - [ - (identifier) @name - (named_imports - (import_specifier - name: (_) @name - alias: (_)? @alias)) - ]) - source: (string (string_fragment) @source)) @import + import_clause: (import_clause + [ + (identifier) @name + (named_imports + (import_specifier + name: (_) @name + alias: (_)? @alias)) + ]) + source: (string + (string_fragment) @source)) @import (import_statement - !import_clause - source: (string (string_fragment) @source @wildcard)) @import + !import_clause + source: (string + (string_fragment) @source @wildcard)) @import diff --git a/crates/languages/src/tsx/indents.scm b/crates/languages/src/tsx/indents.scm index 9897f3060ea..1e72160bca2 100644 --- a/crates/languages/src/tsx/indents.scm +++ b/crates/languages/src/tsx/indents.scm @@ -1,20 +1,32 @@ [ - (call_expression) - (assignment_expression) - (member_expression) - (lexical_declaration) - (variable_declaration) - (assignment_expression) - (if_statement) - (for_statement) + (call_expression) + (assignment_expression) + (member_expression) + (lexical_declaration) + (variable_declaration) + (assignment_expression) + (if_statement) + (for_statement) ] @indent -(_ "[" "]" @end) @indent -(_ "<" ">" @end) @indent -(_ "{" "}" @end) @indent -(_ "(" ")" @end) @indent +(_ + "[" + "]" @end) @indent -(jsx_opening_element ">" @end) @indent +(_ + "<" + ">" @end) @indent + +(_ + "{" + "}" @end) @indent + +(_ + "(" + ")" @end) @indent + +(jsx_opening_element + ">" @end) @indent (jsx_element (jsx_opening_element) @start diff --git a/crates/languages/src/tsx/injections.scm b/crates/languages/src/tsx/injections.scm index 2cf3ea69ca2..fda53263f57 100644 --- a/crates/languages/src/tsx/injections.scm +++ b/crates/languages/src/tsx/injections.scm @@ -1,6 +1,5 @@ ((comment) @injection.content - (#set! injection.language "comment") -) + (#set! injection.language "comment")) (((comment) @_jsdoc_comment (#match? @_jsdoc_comment "(?s)^/[*][*][^*].*[*]/$")) @injection.content @@ -10,119 +9,137 @@ (#set! injection.language "regex")) (call_expression - function: (identifier) @_name (#eq? @_name "css") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "css")) -) + function: (identifier) @_name + (#eq? @_name "css") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "css"))) (call_expression function: (member_expression - object: (identifier) @_obj (#eq? @_obj "styled") + object: (identifier) @_obj + (#eq? @_obj "styled") property: (property_identifier)) - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "css")) -) + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "css"))) (call_expression function: (call_expression - function: (identifier) @_name (#eq? @_name "styled")) - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "css")) -) + function: (identifier) @_name + (#eq? @_name "styled")) + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "css"))) (call_expression - function: (identifier) @_name (#eq? @_name "html") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "html")) -) + function: (identifier) @_name + (#eq? @_name "html") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "html"))) (call_expression - function: (identifier) @_name (#eq? @_name "js") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "javascript")) -) + function: (identifier) @_name + (#eq? @_name "js") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "javascript"))) (call_expression - function: (identifier) @_name (#eq? @_name "json") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "json")) -) + function: (identifier) @_name + (#eq? @_name "json") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "json"))) (call_expression - function: (identifier) @_name (#eq? @_name "sql") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "sql")) -) + function: (identifier) @_name + (#eq? @_name "sql") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "sql"))) (call_expression - function: (identifier) @_name (#eq? @_name "ts") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "typescript")) -) + function: (identifier) @_name + (#eq? @_name "ts") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "typescript"))) (call_expression - function: (identifier) @_name (#match? @_name "^ya?ml$") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "yaml")) -) + function: (identifier) @_name + (#match? @_name "^ya?ml$") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "yaml"))) (call_expression - function: (identifier) @_name (#match? @_name "^g(raph)?ql$") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "graphql")) -) + function: (identifier) @_name + (#match? @_name "^g(raph)?ql$") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "graphql"))) (call_expression - function: (identifier) @_name (#match? @_name "^g(raph)?ql$") - arguments: (arguments (template_string (string_fragment) @injection.content - (#set! injection.language "graphql"))) -) + function: (identifier) @_name + (#match? @_name "^g(raph)?ql$") + arguments: (arguments + (template_string + (string_fragment) @injection.content + (#set! injection.language "graphql")))) (call_expression - function: (identifier) @_name(#match? @_name "^iso$") - arguments: (arguments (template_string (string_fragment) @injection.content - (#set! injection.language "isograph"))) -) + function: (identifier) @_name + (#match? @_name "^iso$") + arguments: (arguments + (template_string + (string_fragment) @injection.content + (#set! injection.language "isograph")))) ; Parse the contents of strings and tagged template ; literals with leading ECMAScript comments: ; '/* html */' or '/*html*/' -( - ((comment) @_ecma_comment [ - (string (string_fragment) @injection.content) - (template_string (string_fragment) @injection.content) +(((comment) @_ecma_comment + [ + (string + (string_fragment) @injection.content) + (template_string + (string_fragment) @injection.content) ]) (#match? @_ecma_comment "^\\/\\*\\s*html\\s*\\*\\/") - (#set! injection.language "html") -) + (#set! injection.language "html")) ; '/* sql */' or '/*sql*/' -( - ((comment) @_ecma_comment [ - (string (string_fragment) @injection.content) - (template_string (string_fragment) @injection.content) +(((comment) @_ecma_comment + [ + (string + (string_fragment) @injection.content) + (template_string + (string_fragment) @injection.content) ]) (#match? @_ecma_comment "^\\/\\*\\s*sql\\s*\\*\\/") - (#set! injection.language "sql") -) + (#set! injection.language "sql")) ; '/* gql */' or '/*gql*/' ; '/* graphql */' or '/*graphql*/' -( - ((comment) @_ecma_comment [ - (string (string_fragment) @injection.content) - (template_string (string_fragment) @injection.content) +(((comment) @_ecma_comment + [ + (string + (string_fragment) @injection.content) + (template_string + (string_fragment) @injection.content) ]) (#match? @_ecma_comment "^\\/\\*\\s*(gql|graphql)\\s*\\*\\/") - (#set! injection.language "graphql") -) + (#set! injection.language "graphql")) ; '/* css */' or '/*css*/' -( - ((comment) @_ecma_comment [ - (string (string_fragment) @injection.content) - (template_string (string_fragment) @injection.content) +(((comment) @_ecma_comment + [ + (string + (string_fragment) @injection.content) + (template_string + (string_fragment) @injection.content) ]) (#match? @_ecma_comment "^\\/\\*\\s*(css)\\s*\\*\\/") - (#set! injection.language "css") -) + (#set! injection.language "css")) diff --git a/crates/languages/src/tsx/outline.scm b/crates/languages/src/tsx/outline.scm index 54d29007c7b..37991965256 100644 --- a/crates/languages/src/tsx/outline.scm +++ b/crates/languages/src/tsx/outline.scm @@ -1,230 +1,275 @@ (internal_module - "namespace" @context - name: (_) @name) @item + "namespace" @context + name: (_) @name) @item (enum_declaration - "enum" @context - name: (_) @name) @item + "enum" @context + name: (_) @name) @item (type_alias_declaration - "type" @context - name: (_) @name) @item + "type" @context + name: (_) @name) @item (function_declaration - "async"? @context - "function" @context - name: (_) @name - parameters: (formal_parameters - "(" @context - ")" @context)) @item + "async"? @context + "function" @context + name: (_) @name + parameters: (formal_parameters + "(" @context + ")" @context)) @item (generator_function_declaration - "async"? @context - "function" @context - "*" @context - name: (_) @name - parameters: (formal_parameters - "(" @context - ")" @context)) @item + "async"? @context + "function" @context + "*" @context + name: (_) @name + parameters: (formal_parameters + "(" @context + ")" @context)) @item (interface_declaration - "interface" @context - name: (_) @name) @item + "interface" @context + name: (_) @name) @item (export_statement - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (identifier) @name) @item)) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (identifier) @name) @item)) ; Exported array destructuring (export_statement - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (array_pattern - [ - (identifier) @name @item - (assignment_pattern left: (identifier) @name @item) - (rest_pattern (identifier) @name @item) - ])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (array_pattern + [ + (identifier) @name @item + (assignment_pattern + left: (identifier) @name @item) + (rest_pattern + (identifier) @name @item) + ])))) ; Exported object destructuring (export_statement - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (object_pattern - [(shorthand_property_identifier_pattern) @name @item - (pair_pattern - value: (identifier) @name @item) - (pair_pattern - value: (assignment_pattern left: (identifier) @name @item)) - (rest_pattern (identifier) @name @item)])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (object_pattern + [ + (shorthand_property_identifier_pattern) @name @item + (pair_pattern + value: (identifier) @name @item) + (pair_pattern + value: (assignment_pattern + left: (identifier) @name @item)) + (rest_pattern + (identifier) @name @item) + ])))) (program - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (identifier) @name) @item)) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (identifier) @name) @item)) ; Top-level array destructuring (program - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (array_pattern - [ - (identifier) @name @item - (assignment_pattern left: (identifier) @name @item) - (rest_pattern (identifier) @name @item) - ])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (array_pattern + [ + (identifier) @name @item + (assignment_pattern + left: (identifier) @name @item) + (rest_pattern + (identifier) @name @item) + ])))) ; Top-level object destructuring (program - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (object_pattern - [(shorthand_property_identifier_pattern) @name @item - (pair_pattern - value: (identifier) @name @item) - (pair_pattern - value: (assignment_pattern left: (identifier) @name @item)) - (rest_pattern (identifier) @name @item)])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (object_pattern + [ + (shorthand_property_identifier_pattern) @name @item + (pair_pattern + value: (identifier) @name @item) + (pair_pattern + value: (assignment_pattern + left: (identifier) @name @item)) + (rest_pattern + (identifier) @name @item) + ])))) (class_declaration - "class" @context - name: (_) @name) @item + "class" @context + name: (_) @name) @item (abstract_class_declaration - "abstract" @context - "class" @context - name: (_) @name) @item + "abstract" @context + "class" @context + name: (_) @name) @item ; Method definitions in classes (not in object literals) (class_body - (method_definition - [ - "get" - "set" - "async" - "*" - "readonly" - "static" - (override_modifier) - (accessibility_modifier) - ]* @context - name: (_) @name - parameters: (formal_parameters - "(" @context - ")" @context)) @item) + (method_definition + [ + "get" + "set" + "async" + "*" + "readonly" + "static" + (override_modifier) + (accessibility_modifier) + ]* @context + name: (_) @name + parameters: (formal_parameters + "(" @context + ")" @context)) @item) ; Object literal methods (variable_declarator - value: (object - (method_definition - [ - "get" - "set" - "async" - "*" - ]* @context - name: (_) @name - parameters: (formal_parameters - "(" @context - ")" @context)) @item)) + value: (object + (method_definition + [ + "get" + "set" + "async" + "*" + ]* @context + name: (_) @name + parameters: (formal_parameters + "(" @context + ")" @context)) @item)) (public_field_definition - [ - "declare" - "readonly" - "abstract" - "static" - (accessibility_modifier) - ]* @context - name: (_) @name) @item + [ + "declare" + "readonly" + "abstract" + "static" + (accessibility_modifier) + ]* @context + name: (_) @name) @item ; Add support for (node:test, bun:test and Jest) runnable -( - (call_expression - function: [ - (identifier) @_name - (member_expression - object: [ - (identifier) @_name - (member_expression object: (identifier) @_name) - ] - ) - ] @context - (#any-of? @_name "it" "test" "describe" "context" "suite") - arguments: ( - arguments . [ - (string (string_fragment) @name) - (identifier) @name - ] - ) - ) -) @item +((call_expression + function: [ + (identifier) @_name + (member_expression + object: [ + (identifier) @_name + (member_expression + object: (identifier) @_name) + ]) + ] @context + (#any-of? @_name "it" "test" "describe" "context" "suite") + arguments: (arguments + . + [ + (string + (string_fragment) @name) + (identifier) @name + ]))) @item ; Add support for parameterized tests -( - (call_expression - function: (call_expression - function: (member_expression - object: [(identifier) @_name (member_expression object: (identifier) @_name)] - property: (property_identifier) @_property - ) - (#any-of? @_name "it" "test" "describe" "context" "suite") - (#any-of? @_property "each") - ) - arguments: ( - arguments . [ - (string (string_fragment) @name) - (identifier) @name - ] - ) - ) -) @item +((call_expression + function: (call_expression + function: (member_expression + object: [ + (identifier) @_name + (member_expression + object: (identifier) @_name) + ] + property: (property_identifier) @_property) + (#any-of? @_name "it" "test" "describe" "context" "suite") + (#any-of? @_property "each")) + arguments: (arguments + . + [ + (string + (string_fragment) @name) + (identifier) @name + ]))) @item ; Object properties (pair - key: [ - (property_identifier) @name - (string (string_fragment) @name) - (number) @name - (computed_property_name) @name - ]) @item - + key: [ + (property_identifier) @name + (string + (string_fragment) @name) + (number) @name + (computed_property_name) @name + ]) @item ; Nested variables in function bodies (statement_block - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (identifier) @name) @item)) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (identifier) @name) @item)) ; Nested array destructuring in functions (statement_block - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (array_pattern - [ - (identifier) @name @item - (assignment_pattern left: (identifier) @name @item) - (rest_pattern (identifier) @name @item) - ])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (array_pattern + [ + (identifier) @name @item + (assignment_pattern + left: (identifier) @name @item) + (rest_pattern + (identifier) @name @item) + ])))) ; Nested object destructuring in functions (statement_block - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (object_pattern - [(shorthand_property_identifier_pattern) @name @item - (pair_pattern value: (identifier) @name @item) - (pair_pattern value: (assignment_pattern left: (identifier) @name @item)) - (rest_pattern (identifier) @name @item)])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (object_pattern + [ + (shorthand_property_identifier_pattern) @name @item + (pair_pattern + value: (identifier) @name @item) + (pair_pattern + value: (assignment_pattern + left: (identifier) @name @item)) + (rest_pattern + (identifier) @name @item) + ])))) (comment) @annotation diff --git a/crates/languages/src/tsx/overrides.scm b/crates/languages/src/tsx/overrides.scm index f5a51af33fe..759ffe8703f 100644 --- a/crates/languages/src/tsx/overrides.scm +++ b/crates/languages/src/tsx/overrides.scm @@ -2,7 +2,8 @@ (string) @string -(template_string (string_fragment) @string) +(template_string + (string_fragment) @string) (jsx_element) @element @@ -13,6 +14,7 @@ (jsx_expression) ] @default -(_ value: (call_expression - function: (identifier) @function_name_before_type_arguments - type_arguments: (type_arguments))) +(_ + value: (call_expression + function: (identifier) @function_name_before_type_arguments + type_arguments: (type_arguments))) diff --git a/crates/languages/src/tsx/runnables.scm b/crates/languages/src/tsx/runnables.scm index 85702cf99d9..db1f69a2c22 100644 --- a/crates/languages/src/tsx/runnables.scm +++ b/crates/languages/src/tsx/runnables.scm @@ -1,46 +1,42 @@ ; Add support for (node:test, bun:test and Jest) runnable ; Function expression that has `it`, `test` or `describe` as the function name -( - (call_expression - function: [ - (identifier) @_name - (member_expression - object: [ - (identifier) @_name - (member_expression object: (identifier) @_name) - ] - ) - ] - (#any-of? @_name "it" "test" "describe" "context" "suite") - arguments: ( - arguments . [ - (string (string_fragment) @run) - (identifier) @run - ] - ) - ) @_js-test - - (#set! tag js-test) -) +((call_expression + function: [ + (identifier) @_name + (member_expression + object: [ + (identifier) @_name + (member_expression + object: (identifier) @_name) + ]) + ] + (#any-of? @_name "it" "test" "describe" "context" "suite") + arguments: (arguments + . + [ + (string + (string_fragment) @run) + (identifier) @run + ])) @_js-test + (#set! tag js-test)) ; Add support for parameterized tests -( - (call_expression - function: (call_expression - function: (member_expression - object: [(identifier) @_name (member_expression object: (identifier) @_name)] - property: (property_identifier) @_property - ) - (#any-of? @_name "it" "test" "describe" "context" "suite") - (#any-of? @_property "each") - ) - arguments: ( - arguments . [ - (string (string_fragment) @run) - (identifier) @run - ] - ) - ) @_js-test - - (#set! tag js-test) -) +((call_expression + function: (call_expression + function: (member_expression + object: [ + (identifier) @_name + (member_expression + object: (identifier) @_name) + ] + property: (property_identifier) @_property) + (#any-of? @_name "it" "test" "describe" "context" "suite") + (#any-of? @_property "each")) + arguments: (arguments + . + [ + (string + (string_fragment) @run) + (identifier) @run + ])) @_js-test + (#set! tag js-test)) diff --git a/crates/languages/src/tsx/textobjects.scm b/crates/languages/src/tsx/textobjects.scm index 628a921f3ac..7a3a4768d94 100644 --- a/crates/languages/src/tsx/textobjects.scm +++ b/crates/languages/src/tsx/textobjects.scm @@ -1,113 +1,129 @@ (comment)+ @comment.around (function_declaration - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (method_definition - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (function_expression - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around ((arrow_function - body: (statement_block - "{" - (_)* @function.inside - "}")) @function.around - (#not-has-parent? @function.around variable_declarator)) + body: (statement_block + "{" + (_)* @function.inside + "}")) @function.around + (#not-has-parent? @function.around variable_declarator)) ; Arrow function in variable declaration - capture the full declaration ([ - (lexical_declaration - (variable_declarator - value: (arrow_function - body: (statement_block - "{" - (_)* @function.inside - "}")))) - (variable_declaration - (variable_declarator - value: (arrow_function - body: (statement_block - "{" - (_)* @function.inside - "}")))) + (lexical_declaration + (variable_declarator + value: (arrow_function + body: (statement_block + "{" + (_)* @function.inside + "}")))) + (variable_declaration + (variable_declarator + value: (arrow_function + body: (statement_block + "{" + (_)* @function.inside + "}")))) ]) @function.around ; Arrow function in variable declaration (expression body fallback) ([ - (lexical_declaration - (variable_declarator - value: (arrow_function - body: (_) @function.inside))) - (variable_declaration - (variable_declarator - value: (arrow_function - body: (_) @function.inside))) + (lexical_declaration + (variable_declarator + value: (arrow_function + body: (_) @function.inside))) + (variable_declaration + (variable_declarator + value: (arrow_function + body: (_) @function.inside))) ]) @function.around ; Catch-all for arrow functions in other contexts (callbacks, etc.) ((arrow_function - body: (_) @function.inside) @function.around - (#not-has-parent? @function.around variable_declarator)) + body: (_) @function.inside) @function.around + (#not-has-parent? @function.around variable_declarator)) + (function_signature) @function.around (generator_function - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (generator_function_declaration - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (class_declaration - body: (_ - "{" - [(_) ";"?]* @class.inside - "}" )) @class.around + body: (_ + "{" + [ + (_) + ";"? + ]* @class.inside + "}")) @class.around (class - body: (_ - "{" - (_)* @class.inside - "}" )) @class.around + body: (_ + "{" + (_)* @class.inside + "}")) @class.around (interface_declaration - body: (_ - "{" - [(_) ";"?]* @class.inside - "}" )) @class.around + body: (_ + "{" + [ + (_) + ";"? + ]* @class.inside + "}")) @class.around (enum_declaration - body: (_ - "{" - [(_) ","?]* @class.inside - "}" )) @class.around + body: (_ + "{" + [ + (_) + ","? + ]* @class.inside + "}")) @class.around (ambient_declaration - (module + (module body: (_ - "{" - [(_) ";"?]* @class.inside - "}" ))) @class.around + "{" + [ + (_) + ";"? + ]* @class.inside + "}"))) @class.around (internal_module - body: (_ - "{" - [(_) ";"?]* @class.inside - "}" )) @class.around + body: (_ + "{" + [ + (_) + ";"? + ]* @class.inside + "}")) @class.around (type_alias_declaration) @class.around diff --git a/crates/languages/src/typescript/brackets.scm b/crates/languages/src/typescript/brackets.scm index 63523384914..2f6f3a133fb 100644 --- a/crates/languages/src/typescript/brackets.scm +++ b/crates/languages/src/typescript/brackets.scm @@ -1,7 +1,23 @@ -("(" @open ")" @close) -("[" @open "]" @close) -("{" @open "}" @close) -("<" @open ">" @close) -(("\"" @open "\"" @close) (#set! rainbow.exclude)) -(("'" @open "'" @close) (#set! rainbow.exclude)) -(("`" @open "`" @close) (#set! rainbow.exclude)) +("(" @open + ")" @close) + +("[" @open + "]" @close) + +("{" @open + "}" @close) + +("<" @open + ">" @close) + +(("\"" @open + "\"" @close) + (#set! rainbow.exclude)) + +(("'" @open + "'" @close) + (#set! rainbow.exclude)) + +(("`" @open + "`" @close) + (#set! rainbow.exclude)) diff --git a/crates/languages/src/typescript/debugger.scm b/crates/languages/src/typescript/debugger.scm index a99f194a4a4..8f384fd8ad9 100644 --- a/crates/languages/src/typescript/debugger.scm +++ b/crates/languages/src/typescript/debugger.scm @@ -1,23 +1,51 @@ -(lexical_declaration (variable_declarator name: (identifier) @debug-variable)) +(lexical_declaration + (variable_declarator + name: (identifier) @debug-variable)) -(for_in_statement left: (identifier) @debug-variable) -(for_statement initializer: (lexical_declaration (variable_declarator name: (identifier) @debug-variable))) +(for_in_statement + left: (identifier) @debug-variable) -(binary_expression left: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) -(binary_expression right: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(for_statement + initializer: (lexical_declaration + (variable_declarator + name: (identifier) @debug-variable))) -(unary_expression argument: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) -(update_expression argument: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(binary_expression + left: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(return_statement (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(binary_expression + right: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(parenthesized_expression (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(unary_expression + argument: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(array (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(update_expression + argument: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(pair value: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(return_statement + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) -(member_expression object: (identifier) @debug-variable (#not-match? @debug-variable "^[A-Z]")) +(parenthesized_expression + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(array + (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(pair + value: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) + +(member_expression + object: (identifier) @debug-variable + (#not-match? @debug-variable "^[A-Z]")) (statement_block) @debug-scope + (program) @debug-scope diff --git a/crates/languages/src/typescript/highlights.scm b/crates/languages/src/typescript/highlights.scm index 8ec3ec26cca..55eb9119e49 100644 --- a/crates/languages/src/typescript/highlights.scm +++ b/crates/languages/src/typescript/highlights.scm @@ -1,46 +1,19 @@ ; Variables - (identifier) @variable (call_expression function: (member_expression object: (identifier) @type - (#any-of? - @type - "Promise" - "Array" - "Object" - "Map" - "Set" - "WeakMap" - "WeakSet" - "Date" - "Error" - "TypeError" - "RangeError" - "SyntaxError" - "ReferenceError" - "EvalError" - "URIError" - "RegExp" - "Function" - "Number" - "String" - "Boolean" - "Symbol" - "BigInt" - "Proxy" - "ArrayBuffer" - "DataView" - ) - ) -) + (#any-of? @type + "Promise" "Array" "Object" "Map" "Set" "WeakMap" "WeakSet" "Date" "Error" "TypeError" + "RangeError" "SyntaxError" "ReferenceError" "EvalError" "URIError" "RegExp" "Function" + "Number" "String" "Boolean" "Symbol" "BigInt" "Proxy" "ArrayBuffer" "DataView"))) ; Special identifiers - (type_annotation) @type (type_identifier) @type + (predefined_type) @type.builtin (type_alias_declaration @@ -65,49 +38,47 @@ (implements_clause (type_identifier) @type) -;; Enables ts-pretty-errors -;; The Lsp returns "snippets" of typescript, which are not valid typescript in totality, -;; but should still be highlighted -;; Highlights object literals by hijacking the statement_block pattern, but only if -;; the statement block follows an object literal pattern -((statement_block - (labeled_statement - ;; highlight the label like a property name - label: (statement_identifier) @property.name - body: [ - ;; match a terminating expression statement - (expression_statement - ;; single identifier - treat as a type name - [(identifier) @type.name - ;; object - treat as a property - type pair - (object - (pair - key: (_) @property.name - value: (_) @type.name)) - ;; subscript_expression - treat as an array declaration - (subscript_expression - object: (_) @type.name - index: (_) - ) - ;; templated string - treat each identifier contained as a type name - (template_string - (template_substitution - (identifier) @type.name)) - ]) - ;; match a nested statement block - (statement_block) @nested - ]))) +; Enables ts-pretty-errors +; The Lsp returns "snippets" of typescript, which are not valid typescript in totality, +; but should still be highlighted +; Highlights object literals by hijacking the statement_block pattern, but only if +; the statement block follows an object literal pattern +(statement_block + (labeled_statement + ; highlight the label like a property name + label: (statement_identifier) @property.name + body: [ + ; match a terminating expression statement + (expression_statement + ; single identifier - treat as a type name + [ + (identifier) @type.name + ; object - treat as a property - type pair + (object + (pair + key: (_) @property.name + value: (_) @type.name)) + ; subscript_expression - treat as an array declaration + (subscript_expression + object: (_) @type.name + index: (_)) + ; templated string - treat each identifier contained as a type name + (template_string + (template_substitution + (identifier) @type.name)) + ]) + ; match a nested statement block + (statement_block) @nested + ])) ; Inline type imports: import { type Foo } or import { type Foo as Bar } (import_specifier "type" - name: (identifier) @type -) + name: (identifier) @type) (import_specifier "type" - alias: (identifier) @type -) + alias: (identifier) @type) ; Full type imports: import type { Foo } or import type { Foo as Bar } (import_statement @@ -115,45 +86,41 @@ (import_clause (named_imports (import_specifier - name: (identifier) @type - ) - ) - ) -) + name: (identifier) @type)))) (import_statement "type" (import_clause (named_imports (import_specifier - alias: (identifier) @type - ) - ) - ) -) + alias: (identifier) @type)))) ([ (identifier) (shorthand_property_identifier) (shorthand_property_identifier_pattern) - ] @constant - (#match? @constant "^_*[A-Z_][A-Z\\d_]*$")) +] @constant + (#match? @constant "^_*[A-Z_][A-Z\\d_]*$")) ; Properties - (property_identifier) @property + (shorthand_property_identifier) @property + (shorthand_property_identifier_pattern) @property + (private_property_identifier) @property ; Function and method calls - (call_expression function: (identifier) @function) (call_expression function: (member_expression - property: [(property_identifier) (private_property_identifier)] @function.method)) + property: [ + (property_identifier) + (private_property_identifier) + ] @function.method)) (new_expression constructor: (identifier) @type) @@ -162,38 +129,60 @@ module: (identifier) @type) ; Function and method definitions - (function_expression name: (identifier) @function) + (function_declaration name: (identifier) @function) + (method_definition - name: [(property_identifier) (private_property_identifier)] @function.method) + name: [ + (property_identifier) + (private_property_identifier) + ] @function.method) + (method_definition - name: (property_identifier) @constructor - (#eq? @constructor "constructor")) + name: (property_identifier) @constructor + (#eq? @constructor "constructor")) (pair - key: [(property_identifier) (private_property_identifier)] @function.method - value: [(function_expression) (arrow_function)]) + key: [ + (property_identifier) + (private_property_identifier) + ] @function.method + value: [ + (function_expression) + (arrow_function) + ]) (assignment_expression left: (member_expression - property: [(property_identifier) (private_property_identifier)] @function.method) - right: [(function_expression) (arrow_function)]) + property: [ + (property_identifier) + (private_property_identifier) + ] @function.method) + right: [ + (function_expression) + (arrow_function) + ]) (variable_declarator name: (identifier) @function - value: [(function_expression) (arrow_function)]) + value: [ + (function_expression) + (arrow_function) + ]) (assignment_expression left: (identifier) @function - right: [(function_expression) (arrow_function)]) + right: [ + (function_expression) + (arrow_function) + ]) (arrow_function) @function ; Parameters - (required_parameter (identifier) @variable.parameter) @@ -227,8 +216,8 @@ name: (identifier) @variable.parameter) ; Literals - (this) @variable.special + (super) @variable.special [ @@ -247,8 +236,7 @@ (undefined) (true) (false) - ] @type.builtin -) + ] @type.builtin) (comment) @comment @@ -263,11 +251,12 @@ (escape_sequence) @string.escape (regex) @string.regex + (regex_flags) @keyword.operator.regex + (number) @number ; Tokens - [ ";" "?." @@ -326,14 +315,14 @@ "..." ] @operator -(regex "/" @string.regex) +(regex + "/" @string.regex) (ternary_expression [ "?" ":" - ] @operator -) + ] @operator) [ "(" @@ -342,7 +331,7 @@ "]" "{" "}" -] @punctuation.bracket +] @punctuation.bracket (template_substitution "${" @punctuation.special @@ -360,31 +349,32 @@ "<" @punctuation.bracket ">" @punctuation.bracket) -(decorator "@" @punctuation.special) +(decorator + "@" @punctuation.special) (union_type - ("|") @punctuation.special) + "|" @punctuation.special) (intersection_type - ("&") @punctuation.special) + "&" @punctuation.special) (type_annotation - (":") @punctuation.special) + ":" @punctuation.special) (index_signature - (":") @punctuation.special) + ":" @punctuation.special) (type_predicate_annotation - (":") @punctuation.special) + ":" @punctuation.special) (public_field_definition - ("?") @punctuation.special) + "?" @punctuation.special) (property_signature - ("?") @punctuation.special) + "?" @punctuation.special) (method_signature - ("?") @punctuation.special) + "?" @punctuation.special) (optional_parameter ([ @@ -393,7 +383,6 @@ ]) @punctuation.special) ; Keywords - [ "abstract" "as" @@ -465,4 +454,5 @@ "yield" ] @keyword.control -(switch_default "default" @keyword.control) +(switch_default + "default" @keyword.control) diff --git a/crates/languages/src/typescript/imports.scm b/crates/languages/src/typescript/imports.scm index 68ca25b2c15..de8f8db4181 100644 --- a/crates/languages/src/typescript/imports.scm +++ b/crates/languages/src/typescript/imports.scm @@ -1,20 +1,23 @@ (import_statement - import_clause: (import_clause - [ - (identifier) @name - (named_imports - (import_specifier - name: (_) @name - alias: (_)? @alias)) - (namespace_import) @wildcard - ]) - source: (string (string_fragment) @source)) @import + import_clause: (import_clause + [ + (identifier) @name + (named_imports + (import_specifier + name: (_) @name + alias: (_)? @alias)) + (namespace_import) @wildcard + ]) + source: (string + (string_fragment) @source)) @import (import_statement - !source - import_clause: (import_require_clause - source: (string (string_fragment) @source))) @wildcard @import + !source + import_clause: (import_require_clause + source: (string + (string_fragment) @source))) @wildcard @import (import_statement - !import_clause - source: (string (string_fragment) @source)) @wildcard @import + !import_clause + source: (string + (string_fragment) @source)) @wildcard @import diff --git a/crates/languages/src/typescript/indents.scm b/crates/languages/src/typescript/indents.scm index b4ac50bf5ac..2715d256719 100644 --- a/crates/languages/src/typescript/indents.scm +++ b/crates/languages/src/typescript/indents.scm @@ -1,17 +1,28 @@ [ - (call_expression) - (assignment_expression) - (member_expression) - (lexical_declaration) - (variable_declaration) - (assignment_expression) - ; below handled by `(_ "{" "}" @end) @indent` - ; (if_statement) - ; (for_statement) - ; (while_statement) + (call_expression) + (assignment_expression) + (member_expression) + (lexical_declaration) + (variable_declaration) + (assignment_expression) + ; below handled by `(_ "{" "}" @end) @indent` + ; (if_statement) + ; (for_statement) + ; (while_statement) ] @indent -(_ "[" "]" @end) @indent -(_ "<" ">" @end) @indent -(_ "{" "}" @end) @indent -(_ "(" ")" @end) @indent +(_ + "[" + "]" @end) @indent + +(_ + "<" + ">" @end) @indent + +(_ + "{" + "}" @end) @indent + +(_ + "(" + ")" @end) @indent diff --git a/crates/languages/src/typescript/injections.scm b/crates/languages/src/typescript/injections.scm index 91880407900..a8cf9a41b5f 100644 --- a/crates/languages/src/typescript/injections.scm +++ b/crates/languages/src/typescript/injections.scm @@ -1,6 +1,5 @@ ((comment) @injection.content - (#set! injection.language "comment") -) + (#set! injection.language "comment")) (((comment) @_jsdoc_comment (#match? @_jsdoc_comment "(?s)^/[*][*][^*].*[*]/$")) @injection.content @@ -14,156 +13,187 @@ (#set! injection.language "regex")) (call_expression - function: (identifier) @_name (#eq? @_name "css") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "css")) -) + function: (identifier) @_name + (#eq? @_name "css") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "css"))) (call_expression function: (member_expression - object: (identifier) @_obj (#eq? @_obj "styled") + object: (identifier) @_obj + (#eq? @_obj "styled") property: (property_identifier)) - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "css")) -) + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "css"))) (call_expression function: (call_expression - function: (identifier) @_name (#eq? @_name "styled")) - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "css")) -) + function: (identifier) @_name + (#eq? @_name "styled")) + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "css"))) (call_expression - function: (identifier) @_name (#eq? @_name "html") + function: (identifier) @_name + (#eq? @_name "html") arguments: (template_string) @injection.content - (#set! injection.language "html") -) + (#set! injection.language "html")) (call_expression - function: (identifier) @_name (#eq? @_name "js") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "javascript")) -) + function: (identifier) @_name + (#eq? @_name "js") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "javascript"))) (call_expression - function: (identifier) @_name (#eq? @_name "json") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "json")) -) + function: (identifier) @_name + (#eq? @_name "json") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "json"))) (call_expression - function: (identifier) @_name (#eq? @_name "sql") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "sql")) -) + function: (identifier) @_name + (#eq? @_name "sql") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "sql"))) (call_expression - function: (identifier) @_name (#eq? @_name "ts") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "typescript")) -) + function: (identifier) @_name + (#eq? @_name "ts") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "typescript"))) (call_expression - function: (identifier) @_name (#match? @_name "^ya?ml$") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "yaml")) -) + function: (identifier) @_name + (#match? @_name "^ya?ml$") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "yaml"))) (call_expression - function: (identifier) @_name (#match? @_name "^g(raph)?ql$") - arguments: (template_string (string_fragment) @injection.content - (#set! injection.language "graphql")) -) + function: (identifier) @_name + (#match? @_name "^g(raph)?ql$") + arguments: (template_string + (string_fragment) @injection.content + (#set! injection.language "graphql"))) (call_expression - function: (identifier) @_name (#match? @_name "^g(raph)?ql$") - arguments: (arguments (template_string (string_fragment) @injection.content - (#set! injection.language "graphql"))) -) + function: (identifier) @_name + (#match? @_name "^g(raph)?ql$") + arguments: (arguments + (template_string + (string_fragment) @injection.content + (#set! injection.language "graphql")))) (call_expression - function: (identifier) @_name(#match? @_name "^iso$") - arguments: (arguments (template_string (string_fragment) @injection.content - (#set! injection.language "isograph"))) -) + function: (identifier) @_name + (#match? @_name "^iso$") + arguments: (arguments + (template_string + (string_fragment) @injection.content + (#set! injection.language "isograph")))) -;; Angular Component template injection +; Angular Component template injection (call_expression function: [ - (identifier) @_decorator (#eq? @_decorator "Component") - (member_expression property: (property_identifier) @_decorator (#eq? @_decorator "Component")) + (identifier) @_decorator + (#eq? @_decorator "Component") + (member_expression + property: (property_identifier) @_decorator + (#eq? @_decorator "Component")) ] - arguments: (arguments (object - (pair - key: (property_identifier) @_prop (#eq? @_prop "template") - value: [ - (string) @injection.content - (template_string) @injection.content - (template_string (string_fragment) @injection.content) - ] - ))) + arguments: (arguments + (object + (pair + key: (property_identifier) @_prop + (#eq? @_prop "template") + value: [ + (string) @injection.content + (template_string) @injection.content + (template_string + (string_fragment) @injection.content) + ]))) (#set! injection.language "angular")) -;; Angular Component styles injection +; Angular Component styles injection (call_expression function: [ - (identifier) @_decorator (#eq? @_decorator "Component") - (member_expression property: (property_identifier) @_decorator (#eq? @_decorator "Component")) + (identifier) @_decorator + (#eq? @_decorator "Component") + (member_expression + property: (property_identifier) @_decorator + (#eq? @_decorator "Component")) ] - arguments: (arguments (object - (pair - key: (property_identifier) @_prop (#eq? @_prop "styles") - value: [ - (string) @injection.content - (template_string) @injection.content - (template_string (string_fragment) @injection.content) - (array (string) @injection.content) - (array (template_string) @injection.content) - (array (template_string (string_fragment)) @injection.content) - ] - ))) + arguments: (arguments + (object + (pair + key: (property_identifier) @_prop + (#eq? @_prop "styles") + value: [ + (string) @injection.content + (template_string) @injection.content + (template_string + (string_fragment) @injection.content) + (array + (string) @injection.content) + (array + (template_string) @injection.content) + (array + (template_string + (string_fragment)) @injection.content) + ]))) (#set! injection.language "css")) ; Parse the contents of strings and tagged template ; literals with leading ECMAScript comments: ; '/* html */' or '/*html*/' -( - ((comment) @_ecma_comment [ - (string (string_fragment) @injection.content) - (template_string (string_fragment) @injection.content) +(((comment) @_ecma_comment + [ + (string + (string_fragment) @injection.content) + (template_string + (string_fragment) @injection.content) ]) (#match? @_ecma_comment "^\\/\\*\\s*html\\s*\\*\\/") - (#set! injection.language "html") -) + (#set! injection.language "html")) ; '/* sql */' or '/*sql*/' -( - ((comment) @_ecma_comment [ - (string (string_fragment) @injection.content) - (template_string (string_fragment) @injection.content) +(((comment) @_ecma_comment + [ + (string + (string_fragment) @injection.content) + (template_string + (string_fragment) @injection.content) ]) (#match? @_ecma_comment "^\\/\\*\\s*sql\\s*\\*\\/") - (#set! injection.language "sql") -) + (#set! injection.language "sql")) ; '/* gql */' or '/*gql*/' ; '/* graphql */' or '/*graphql*/' -( - ((comment) @_ecma_comment [ - (string (string_fragment) @injection.content) - (template_string (string_fragment) @injection.content) +(((comment) @_ecma_comment + [ + (string + (string_fragment) @injection.content) + (template_string + (string_fragment) @injection.content) ]) (#match? @_ecma_comment "^\\/\\*\\s*(gql|graphql)\\s*\\*\\/") - (#set! injection.language "graphql") -) + (#set! injection.language "graphql")) ; '/* css */' or '/*css*/' -( - ((comment) @_ecma_comment [ - (string (string_fragment) @injection.content) - (template_string (string_fragment) @injection.content) +(((comment) @_ecma_comment + [ + (string + (string_fragment) @injection.content) + (template_string + (string_fragment) @injection.content) ]) (#match? @_ecma_comment "^\\/\\*\\s*(css)\\s*\\*\\/") - (#set! injection.language "css") -) + (#set! injection.language "css")) diff --git a/crates/languages/src/typescript/outline.scm b/crates/languages/src/typescript/outline.scm index 54d29007c7b..37991965256 100644 --- a/crates/languages/src/typescript/outline.scm +++ b/crates/languages/src/typescript/outline.scm @@ -1,230 +1,275 @@ (internal_module - "namespace" @context - name: (_) @name) @item + "namespace" @context + name: (_) @name) @item (enum_declaration - "enum" @context - name: (_) @name) @item + "enum" @context + name: (_) @name) @item (type_alias_declaration - "type" @context - name: (_) @name) @item + "type" @context + name: (_) @name) @item (function_declaration - "async"? @context - "function" @context - name: (_) @name - parameters: (formal_parameters - "(" @context - ")" @context)) @item + "async"? @context + "function" @context + name: (_) @name + parameters: (formal_parameters + "(" @context + ")" @context)) @item (generator_function_declaration - "async"? @context - "function" @context - "*" @context - name: (_) @name - parameters: (formal_parameters - "(" @context - ")" @context)) @item + "async"? @context + "function" @context + "*" @context + name: (_) @name + parameters: (formal_parameters + "(" @context + ")" @context)) @item (interface_declaration - "interface" @context - name: (_) @name) @item + "interface" @context + name: (_) @name) @item (export_statement - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (identifier) @name) @item)) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (identifier) @name) @item)) ; Exported array destructuring (export_statement - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (array_pattern - [ - (identifier) @name @item - (assignment_pattern left: (identifier) @name @item) - (rest_pattern (identifier) @name @item) - ])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (array_pattern + [ + (identifier) @name @item + (assignment_pattern + left: (identifier) @name @item) + (rest_pattern + (identifier) @name @item) + ])))) ; Exported object destructuring (export_statement - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (object_pattern - [(shorthand_property_identifier_pattern) @name @item - (pair_pattern - value: (identifier) @name @item) - (pair_pattern - value: (assignment_pattern left: (identifier) @name @item)) - (rest_pattern (identifier) @name @item)])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (object_pattern + [ + (shorthand_property_identifier_pattern) @name @item + (pair_pattern + value: (identifier) @name @item) + (pair_pattern + value: (assignment_pattern + left: (identifier) @name @item)) + (rest_pattern + (identifier) @name @item) + ])))) (program - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (identifier) @name) @item)) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (identifier) @name) @item)) ; Top-level array destructuring (program - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (array_pattern - [ - (identifier) @name @item - (assignment_pattern left: (identifier) @name @item) - (rest_pattern (identifier) @name @item) - ])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (array_pattern + [ + (identifier) @name @item + (assignment_pattern + left: (identifier) @name @item) + (rest_pattern + (identifier) @name @item) + ])))) ; Top-level object destructuring (program - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (object_pattern - [(shorthand_property_identifier_pattern) @name @item - (pair_pattern - value: (identifier) @name @item) - (pair_pattern - value: (assignment_pattern left: (identifier) @name @item)) - (rest_pattern (identifier) @name @item)])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (object_pattern + [ + (shorthand_property_identifier_pattern) @name @item + (pair_pattern + value: (identifier) @name @item) + (pair_pattern + value: (assignment_pattern + left: (identifier) @name @item)) + (rest_pattern + (identifier) @name @item) + ])))) (class_declaration - "class" @context - name: (_) @name) @item + "class" @context + name: (_) @name) @item (abstract_class_declaration - "abstract" @context - "class" @context - name: (_) @name) @item + "abstract" @context + "class" @context + name: (_) @name) @item ; Method definitions in classes (not in object literals) (class_body - (method_definition - [ - "get" - "set" - "async" - "*" - "readonly" - "static" - (override_modifier) - (accessibility_modifier) - ]* @context - name: (_) @name - parameters: (formal_parameters - "(" @context - ")" @context)) @item) + (method_definition + [ + "get" + "set" + "async" + "*" + "readonly" + "static" + (override_modifier) + (accessibility_modifier) + ]* @context + name: (_) @name + parameters: (formal_parameters + "(" @context + ")" @context)) @item) ; Object literal methods (variable_declarator - value: (object - (method_definition - [ - "get" - "set" - "async" - "*" - ]* @context - name: (_) @name - parameters: (formal_parameters - "(" @context - ")" @context)) @item)) + value: (object + (method_definition + [ + "get" + "set" + "async" + "*" + ]* @context + name: (_) @name + parameters: (formal_parameters + "(" @context + ")" @context)) @item)) (public_field_definition - [ - "declare" - "readonly" - "abstract" - "static" - (accessibility_modifier) - ]* @context - name: (_) @name) @item + [ + "declare" + "readonly" + "abstract" + "static" + (accessibility_modifier) + ]* @context + name: (_) @name) @item ; Add support for (node:test, bun:test and Jest) runnable -( - (call_expression - function: [ - (identifier) @_name - (member_expression - object: [ - (identifier) @_name - (member_expression object: (identifier) @_name) - ] - ) - ] @context - (#any-of? @_name "it" "test" "describe" "context" "suite") - arguments: ( - arguments . [ - (string (string_fragment) @name) - (identifier) @name - ] - ) - ) -) @item +((call_expression + function: [ + (identifier) @_name + (member_expression + object: [ + (identifier) @_name + (member_expression + object: (identifier) @_name) + ]) + ] @context + (#any-of? @_name "it" "test" "describe" "context" "suite") + arguments: (arguments + . + [ + (string + (string_fragment) @name) + (identifier) @name + ]))) @item ; Add support for parameterized tests -( - (call_expression - function: (call_expression - function: (member_expression - object: [(identifier) @_name (member_expression object: (identifier) @_name)] - property: (property_identifier) @_property - ) - (#any-of? @_name "it" "test" "describe" "context" "suite") - (#any-of? @_property "each") - ) - arguments: ( - arguments . [ - (string (string_fragment) @name) - (identifier) @name - ] - ) - ) -) @item +((call_expression + function: (call_expression + function: (member_expression + object: [ + (identifier) @_name + (member_expression + object: (identifier) @_name) + ] + property: (property_identifier) @_property) + (#any-of? @_name "it" "test" "describe" "context" "suite") + (#any-of? @_property "each")) + arguments: (arguments + . + [ + (string + (string_fragment) @name) + (identifier) @name + ]))) @item ; Object properties (pair - key: [ - (property_identifier) @name - (string (string_fragment) @name) - (number) @name - (computed_property_name) @name - ]) @item - + key: [ + (property_identifier) @name + (string + (string_fragment) @name) + (number) @name + (computed_property_name) @name + ]) @item ; Nested variables in function bodies (statement_block - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (identifier) @name) @item)) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (identifier) @name) @item)) ; Nested array destructuring in functions (statement_block - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (array_pattern - [ - (identifier) @name @item - (assignment_pattern left: (identifier) @name @item) - (rest_pattern (identifier) @name @item) - ])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (array_pattern + [ + (identifier) @name @item + (assignment_pattern + left: (identifier) @name @item) + (rest_pattern + (identifier) @name @item) + ])))) ; Nested object destructuring in functions (statement_block - (lexical_declaration - ["let" "const"] @context - (variable_declarator - name: (object_pattern - [(shorthand_property_identifier_pattern) @name @item - (pair_pattern value: (identifier) @name @item) - (pair_pattern value: (assignment_pattern left: (identifier) @name @item)) - (rest_pattern (identifier) @name @item)])))) + (lexical_declaration + [ + "let" + "const" + ] @context + (variable_declarator + name: (object_pattern + [ + (shorthand_property_identifier_pattern) @name @item + (pair_pattern + value: (identifier) @name @item) + (pair_pattern + value: (assignment_pattern + left: (identifier) @name @item)) + (rest_pattern + (identifier) @name @item) + ])))) (comment) @annotation diff --git a/crates/languages/src/typescript/overrides.scm b/crates/languages/src/typescript/overrides.scm index 8f437a1424a..f5e99cad68a 100644 --- a/crates/languages/src/typescript/overrides.scm +++ b/crates/languages/src/typescript/overrides.scm @@ -2,8 +2,10 @@ (string) @string -(template_string (string_fragment) @string) +(template_string + (string_fragment) @string) -(_ value: (call_expression - function: (identifier) @function_name_before_type_arguments - type_arguments: (type_arguments))) +(_ + value: (call_expression + function: (identifier) @function_name_before_type_arguments + type_arguments: (type_arguments))) diff --git a/crates/languages/src/typescript/runnables.scm b/crates/languages/src/typescript/runnables.scm index 6bfc5363291..38fee610e85 100644 --- a/crates/languages/src/typescript/runnables.scm +++ b/crates/languages/src/typescript/runnables.scm @@ -1,85 +1,71 @@ ; Add support for (node:test, bun:test, Jest and Deno.test) runnable ; Function expression that has `it`, `test` or `describe` as the function name -( - (call_expression - function: [ - (identifier) @_name - (member_expression - object: [ - (identifier) @_name - (member_expression object: (identifier) @_name) - ] - ) - ] - (#any-of? @_name "it" "test" "describe" "context" "suite") - arguments: ( - arguments . [ - (string (string_fragment) @run) - (identifier) @run - ] - ) - ) @_js-test - - (#set! tag js-test) -) +((call_expression + function: [ + (identifier) @_name + (member_expression + object: [ + (identifier) @_name + (member_expression + object: (identifier) @_name) + ]) + ] + (#any-of? @_name "it" "test" "describe" "context" "suite") + arguments: (arguments + . + [ + (string + (string_fragment) @run) + (identifier) @run + ])) @_js-test + (#set! tag js-test)) ; Add support for parameterized tests -( - (call_expression - function: (call_expression - function: (member_expression - object: [(identifier) @_name (member_expression object: (identifier) @_name)] - property: (property_identifier) @_property - ) - (#any-of? @_name "it" "test" "describe" "context" "suite") - (#any-of? @_property "each") - ) - arguments: ( - arguments . [ - (string (string_fragment) @run) - (identifier) @run - ] - ) - ) @_js-test - - (#set! tag js-test) -) +((call_expression + function: (call_expression + function: (member_expression + object: [ + (identifier) @_name + (member_expression + object: (identifier) @_name) + ] + property: (property_identifier) @_property) + (#any-of? @_name "it" "test" "describe" "context" "suite") + (#any-of? @_property "each")) + arguments: (arguments + . + [ + (string + (string_fragment) @run) + (identifier) @run + ])) @_js-test + (#set! tag js-test)) ; Add support for Deno.test with string names -( - (call_expression - function: (member_expression - object: (identifier) @_namespace - property: (property_identifier) @_method - ) - (#eq? @_namespace "Deno") - (#eq? @_method "test") - arguments: ( - arguments . [ - (string (string_fragment) @run @DENO_TEST_NAME) - (identifier) @run @DENO_TEST_NAME - ] - ) - ) @_js-test - - (#set! tag js-test) -) +((call_expression + function: (member_expression + object: (identifier) @_namespace + property: (property_identifier) @_method) + (#eq? @_namespace "Deno") + (#eq? @_method "test") + arguments: (arguments + . + [ + (string + (string_fragment) @run @DENO_TEST_NAME) + (identifier) @run @DENO_TEST_NAME + ])) @_js-test + (#set! tag js-test)) ; Add support for Deno.test with named function expressions -( - (call_expression - function: (member_expression - object: (identifier) @_namespace - property: (property_identifier) @_method - ) - (#eq? @_namespace "Deno") - (#eq? @_method "test") - arguments: ( - arguments . (function_expression - name: (identifier) @run @DENO_TEST_NAME - ) - ) - ) @_js-test - - (#set! tag js-test) -) +((call_expression + function: (member_expression + object: (identifier) @_namespace + property: (property_identifier) @_method) + (#eq? @_namespace "Deno") + (#eq? @_method "test") + arguments: (arguments + . + (function_expression + name: (identifier) @run @DENO_TEST_NAME))) @_js-test + (#set! tag js-test)) diff --git a/crates/languages/src/typescript/textobjects.scm b/crates/languages/src/typescript/textobjects.scm index 96289f058cd..384ea482352 100644 --- a/crates/languages/src/typescript/textobjects.scm +++ b/crates/languages/src/typescript/textobjects.scm @@ -1,114 +1,130 @@ (comment)+ @comment.around (function_declaration - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (method_definition - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (function_expression - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around ((arrow_function - body: (statement_block - "{" - (_)* @function.inside - "}")) @function.around - (#not-has-parent? @function.around variable_declarator)) + body: (statement_block + "{" + (_)* @function.inside + "}")) @function.around + (#not-has-parent? @function.around variable_declarator)) ; Arrow function in variable declaration - capture the full declaration ([ - (lexical_declaration - (variable_declarator - value: (arrow_function - body: (statement_block - "{" - (_)* @function.inside - "}")))) - (variable_declaration - (variable_declarator - value: (arrow_function - body: (statement_block - "{" - (_)* @function.inside - "}")))) + (lexical_declaration + (variable_declarator + value: (arrow_function + body: (statement_block + "{" + (_)* @function.inside + "}")))) + (variable_declaration + (variable_declarator + value: (arrow_function + body: (statement_block + "{" + (_)* @function.inside + "}")))) ]) @function.around ; Arrow function in variable declaration - capture body as @function.inside ; (for statement blocks, the more specific pattern above captures just the contents) ([ - (lexical_declaration - (variable_declarator - value: (arrow_function - body: (_) @function.inside))) - (variable_declaration - (variable_declarator - value: (arrow_function - body: (_) @function.inside))) + (lexical_declaration + (variable_declarator + value: (arrow_function + body: (_) @function.inside))) + (variable_declaration + (variable_declarator + value: (arrow_function + body: (_) @function.inside))) ]) @function.around ; Catch-all for arrow functions in other contexts (callbacks, etc.) ((arrow_function - body: (_) @function.inside) @function.around - (#not-has-parent? @function.around variable_declarator)) + body: (_) @function.inside) @function.around + (#not-has-parent? @function.around variable_declarator)) + (function_signature) @function.around (generator_function - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (generator_function_declaration - body: (_ - "{" - (_)* @function.inside - "}")) @function.around + body: (_ + "{" + (_)* @function.inside + "}")) @function.around (class_declaration - body: (_ - "{" - [(_) ";"?]* @class.inside - "}" )) @class.around + body: (_ + "{" + [ + (_) + ";"? + ]* @class.inside + "}")) @class.around (class - body: (_ - "{" - (_)* @class.inside - "}" )) @class.around + body: (_ + "{" + (_)* @class.inside + "}")) @class.around (interface_declaration - body: (_ - "{" - [(_) ";"?]* @class.inside - "}" )) @class.around + body: (_ + "{" + [ + (_) + ";"? + ]* @class.inside + "}")) @class.around (enum_declaration - body: (_ - "{" - [(_) ","?]* @class.inside - "}" )) @class.around + body: (_ + "{" + [ + (_) + ","? + ]* @class.inside + "}")) @class.around (ambient_declaration - (module + (module body: (_ - "{" - [(_) ";"?]* @class.inside - "}" ))) @class.around + "{" + [ + (_) + ";"? + ]* @class.inside + "}"))) @class.around (internal_module - body: (_ - "{" - [(_) ";"?]* @class.inside - "}" )) @class.around + body: (_ + "{" + [ + (_) + ";"? + ]* @class.inside + "}")) @class.around (type_alias_declaration) @class.around diff --git a/crates/languages/src/yaml/brackets.scm b/crates/languages/src/yaml/brackets.scm index 0cfc5072d4e..edeb53a0d31 100644 --- a/crates/languages/src/yaml/brackets.scm +++ b/crates/languages/src/yaml/brackets.scm @@ -1,4 +1,13 @@ -("[" @open "]" @close) -("{" @open "}" @close) -(("\"" @open "\"" @close) (#set! rainbow.exclude)) -(("'" @open "'" @close) (#set! rainbow.exclude)) +("[" @open + "]" @close) + +("{" @open + "}" @close) + +(("\"" @open + "\"" @close) + (#set! rainbow.exclude)) + +(("'" @open + "'" @close) + (#set! rainbow.exclude)) diff --git a/crates/languages/src/yaml/highlights.scm b/crates/languages/src/yaml/highlights.scm index dfecf3f9d42..1d9c97c17a7 100644 --- a/crates/languages/src/yaml/highlights.scm +++ b/crates/languages/src/yaml/highlights.scm @@ -1,4 +1,5 @@ (boolean_scalar) @boolean + (null_scalar) @constant.builtin [ @@ -25,30 +26,31 @@ key: (flow_node [ - (plain_scalar (string_scalar)) + (plain_scalar + (string_scalar)) (double_quote_scalar) (single_quote_scalar) ] @property) [ - "," - "-" - ":" - ">" - "?" - "|" + "," + "-" + ":" + ">" + "?" + "|" ] @punctuation.delimiter [ - "[" - "]" - "{" - "}" + "[" + "]" + "{" + "}" ] @punctuation.bracket [ - "*" - "&" - "---" - "..." + "*" + "&" + "---" + "..." ] @punctuation.special diff --git a/crates/languages/src/yaml/injections.scm b/crates/languages/src/yaml/injections.scm index c9de25a18f8..2b94b7f0cdd 100644 --- a/crates/languages/src/yaml/injections.scm +++ b/crates/languages/src/yaml/injections.scm @@ -1,25 +1,26 @@ ((comment) @injection.content - (#set! injection.language "comment") -) + (#set! injection.language "comment")) ; GitHub actions: JavaScript for workflow scripting (inline and block) (block_mapping (block_mapping_pair - key: (flow_node) @_uses (#eq? @_uses "uses") - value: (flow_node) @_actions_ghs (#match? @_actions_ghs "^actions/github-script")) + key: (flow_node) @_uses + (#eq? @_uses "uses") + value: (flow_node) @_actions_ghs + (#match? @_actions_ghs "^actions/github-script")) (block_mapping_pair - key: (flow_node) @_with (#eq? @_with "with") + key: (flow_node) @_with + (#eq? @_with "with") value: (block_node (block_mapping (block_mapping_pair - key: (flow_node) @_run (#eq? @_run "script") + key: (flow_node) @_run + (#eq? @_run "script") value: [ - (flow_node (plain_scalar (string_scalar) @injection.content)) - (block_node (block_scalar) @injection.content) + (flow_node + (plain_scalar + (string_scalar) @injection.content)) + (block_node + (block_scalar) @injection.content) ] - (#set! injection.language "javascript") - ) - ) - ) - ) -) + (#set! injection.language "javascript")))))) diff --git a/crates/languages/src/yaml/outline.scm b/crates/languages/src/yaml/outline.scm index c5a7f8e5d40..a41447bf64c 100644 --- a/crates/languages/src/yaml/outline.scm +++ b/crates/languages/src/yaml/outline.scm @@ -1,9 +1,7 @@ (block_mapping_pair - key: - (flow_node - (plain_scalar - (string_scalar) @name)) - value: - (flow_node - (plain_scalar - (string_scalar) @context))?) @item + key: (flow_node + (plain_scalar + (string_scalar) @name)) + value: (flow_node + (plain_scalar + (string_scalar) @context))?) @item diff --git a/crates/languages/src/yaml/overrides.scm b/crates/languages/src/yaml/overrides.scm index 9503051a620..99c991e7d44 100644 --- a/crates/languages/src/yaml/overrides.scm +++ b/crates/languages/src/yaml/overrides.scm @@ -1,4 +1,5 @@ (comment) @comment.inclusive + [ (single_quote_scalar) (double_quote_scalar) diff --git a/crates/languages/src/yaml/redactions.scm b/crates/languages/src/yaml/redactions.scm index 85fdbd26ea0..56c7415e70f 100644 --- a/crates/languages/src/yaml/redactions.scm +++ b/crates/languages/src/yaml/redactions.scm @@ -1 +1,2 @@ -(block_mapping_pair value: (flow_node) @redact) +(block_mapping_pair + value: (flow_node) @redact) diff --git a/crates/languages/src/zed-keybind-context/brackets.scm b/crates/languages/src/zed-keybind-context/brackets.scm index d086b2e98df..24c20234b63 100644 --- a/crates/languages/src/zed-keybind-context/brackets.scm +++ b/crates/languages/src/zed-keybind-context/brackets.scm @@ -1 +1,2 @@ -("(" @open ")" @close) +("(" @open + ")" @close) diff --git a/extensions/glsl/languages/glsl/brackets.scm b/extensions/glsl/languages/glsl/brackets.scm index 62e137ef262..e83d67f411a 100644 --- a/extensions/glsl/languages/glsl/brackets.scm +++ b/extensions/glsl/languages/glsl/brackets.scm @@ -1,3 +1,8 @@ -("[" @open "]" @close) -("{" @open "}" @close) -("(" @open ")" @close) +("[" @open + "]" @close) + +("{" @open + "}" @close) + +("(" @open + ")" @close) diff --git a/extensions/glsl/languages/glsl/highlights.scm b/extensions/glsl/languages/glsl/highlights.scm index 09f94d4fb58..9e40610ff54 100644 --- a/extensions/glsl/languages/glsl/highlights.scm +++ b/extensions/glsl/languages/glsl/highlights.scm @@ -1,82 +1,136 @@ "break" @keyword + "case" @keyword + "const" @keyword + "continue" @keyword + "default" @keyword + "do" @keyword + "else" @keyword + "enum" @keyword + "extern" @keyword + "for" @keyword + "if" @keyword + "inline" @keyword + "return" @keyword + "sizeof" @keyword + "static" @keyword + "struct" @keyword + "switch" @keyword + "typedef" @keyword + "union" @keyword + "volatile" @keyword + "while" @keyword "#define" @keyword + "#elif" @keyword + "#else" @keyword + "#endif" @keyword + "#if" @keyword + "#ifdef" @keyword + "#ifndef" @keyword + "#include" @keyword + (preproc_directive) @keyword "--" @operator + "-" @operator + "-=" @operator + "->" @operator + "=" @operator + "!=" @operator + "*" @operator + "&" @operator + "&&" @operator + "+" @operator + "++" @operator + "+=" @operator + "<" @operator + "==" @operator + ">" @operator + "||" @operator "." @delimiter + ";" @delimiter (string_literal) @string + (system_lib_string) @string (null) @constant + (number_literal) @number + (char_literal) @number (identifier) @variable (field_identifier) @property + (statement_identifier) @label + (type_identifier) @type + (primitive_type) @type + (sized_type_specifier) @type (call_expression function: (identifier) @function) + (call_expression function: (field_expression field: (field_identifier) @function)) + (function_declarator declarator: (identifier) @function) + (preproc_function_def name: (identifier) @function.special) ((identifier) @constant - (#match? @constant "^[A-Z][A-Z\\d_]*$")) + (#match? @constant "^[A-Z][A-Z\\d_]*$")) (comment) @comment @@ -111,7 +165,5 @@ (extension_storage_class) @storageclass -( - (identifier) @variable.builtin - (#match? @variable.builtin "^gl_") -) +((identifier) @variable.builtin + (#match? @variable.builtin "^gl_")) diff --git a/extensions/html/languages/html/highlights.scm b/extensions/html/languages/html/highlights.scm index bb3b43e8139..21bf193cf34 100644 --- a/extensions/html/languages/html/highlights.scm +++ b/extensions/html/languages/html/highlights.scm @@ -1,12 +1,17 @@ (tag_name) @tag + (doctype) @tag.doctype + (attribute_name) @attribute + [ "\"" "'" (attribute_value) ] @string + (comment) @comment + (entity) @string.special "=" @punctuation.delimiter.html diff --git a/extensions/html/languages/html/indents.scm b/extensions/html/languages/html/indents.scm index 436663dba3e..6e5bf97d4c3 100644 --- a/extensions/html/languages/html/indents.scm +++ b/extensions/html/languages/html/indents.scm @@ -1,5 +1,8 @@ -(start_tag ">" @end) @indent -(self_closing_tag "/>" @end) @indent +(start_tag + ">" @end) @indent + +(self_closing_tag + "/>" @end) @indent (element (start_tag) @start diff --git a/extensions/html/languages/html/injections.scm b/extensions/html/languages/html/injections.scm index 525b3efe29d..e9c2c981557 100644 --- a/extensions/html/languages/html/injections.scm +++ b/extensions/html/languages/html/injections.scm @@ -1,6 +1,5 @@ ((comment) @injection.content - (#set! injection.language "comment") -) + (#set! injection.language "comment")) (script_element (raw_text) @injection.content @@ -11,11 +10,15 @@ (#set! injection.language "css")) (attribute - (attribute_name) @_attribute_name (#match? @_attribute_name "^style$") - (quoted_attribute_value (attribute_value) @injection.content) - (#set! injection.language "css")) + (attribute_name) @_attribute_name + (#match? @_attribute_name "^style$") + (quoted_attribute_value + (attribute_value) @injection.content) + (#set! injection.language "css")) (attribute - (attribute_name) @_attribute_name (#match? @_attribute_name "^on[a-z]+$") - (quoted_attribute_value (attribute_value) @injection.content) - (#set! injection.language "javascript")) + (attribute_name) @_attribute_name + (#match? @_attribute_name "^on[a-z]+$") + (quoted_attribute_value + (attribute_value) @injection.content) + (#set! injection.language "javascript")) diff --git a/extensions/html/languages/html/overrides.scm b/extensions/html/languages/html/overrides.scm index 434f610e702..3e9e499e5c9 100644 --- a/extensions/html/languages/html/overrides.scm +++ b/extensions/html/languages/html/overrides.scm @@ -1,4 +1,5 @@ (comment) @comment + (quoted_attribute_value) @string [ diff --git a/extensions/proto/languages/proto/highlights.scm b/extensions/proto/languages/proto/highlights.scm index 923e00bb1df..f17c4812738 100644 --- a/extensions/proto/languages/proto/highlights.scm +++ b/extensions/proto/languages/proto/highlights.scm @@ -52,11 +52,11 @@ "}" "<" ">" -] @punctuation.bracket +] @punctuation.bracket [ - ";" - "," + ";" + "," ] @punctuation.delimiter "=" @operator diff --git a/extensions/proto/languages/proto/indents.scm b/extensions/proto/languages/proto/indents.scm index acb44a5e1e6..c096b82d2b2 100644 --- a/extensions/proto/languages/proto/indents.scm +++ b/extensions/proto/languages/proto/indents.scm @@ -1,3 +1,11 @@ -(_ "{" "}" @end) @indent -(_ "[" "]" @end) @indent -(_ "(" ")" @end) @indent +(_ + "{" + "}" @end) @indent + +(_ + "[" + "]" @end) @indent + +(_ + "(" + ")" @end) @indent diff --git a/extensions/proto/languages/proto/outline.scm b/extensions/proto/languages/proto/outline.scm index f90b1bae33e..f0aa6eff980 100644 --- a/extensions/proto/languages/proto/outline.scm +++ b/extensions/proto/languages/proto/outline.scm @@ -1,19 +1,19 @@ (message - "message" @context - (message_name - (identifier) @name)) @item + "message" @context + (message_name + (identifier) @name)) @item (service - "service" @context - (service_name - (identifier) @name)) @item + "service" @context + (service_name + (identifier) @name)) @item (rpc - "rpc" @context - (rpc_name - (identifier) @name)) @item + "rpc" @context + (rpc_name + (identifier) @name)) @item (enum - "enum" @context - (enum_name - (identifier) @name)) @item + "enum" @context + (enum_name + (identifier) @name)) @item diff --git a/extensions/proto/languages/proto/textobjects.scm b/extensions/proto/languages/proto/textobjects.scm index 90ea84282da..7e859c0d65b 100644 --- a/extensions/proto/languages/proto/textobjects.scm +++ b/extensions/proto/languages/proto/textobjects.scm @@ -1,17 +1,21 @@ -(message (message_body +(message + (message_body "{" (_)* @class.inside "}")) @class.around -(enum (enum_body + +(enum + (enum_body "{" (_)* @class.inside "}")) @class.around + (service - "service" - (_) - "{" - (_)* @class.inside - "}") @class.around + "service" + (_) + "{" + (_)* @class.inside + "}") @class.around (rpc) @function.around diff --git a/extensions/test-extension/languages/gleam/highlights.scm b/extensions/test-extension/languages/gleam/highlights.scm index 4b85b88d015..50de3a6acbe 100644 --- a/extensions/test-extension/languages/gleam/highlights.scm +++ b/extensions/test-extension/languages/gleam/highlights.scm @@ -1,6 +1,8 @@ ; Comments (module_comment) @comment + (statement_comment) @comment + (comment) @comment ; Constants @@ -9,43 +11,61 @@ ; Variables (identifier) @variable + (discard) @comment.unused ; Modules (module) @module -(import alias: (identifier) @module) + +(import + alias: (identifier) @module) + (remote_type_identifier module: (identifier) @module) + (remote_constructor_name module: (identifier) @module) + ((field_access record: (identifier) @module field: (label) @function) - (#is-not? local)) + (#is-not? local)) ; Functions -(unqualified_import (identifier) @function) -(unqualified_import "type" (type_identifier) @type) -(unqualified_import (type_identifier) @constructor) +(unqualified_import + (identifier) @function) + +(unqualified_import + "type" + (type_identifier) @type) + +(unqualified_import + (type_identifier) @constructor) + (function name: (identifier) @function) + (external_function name: (identifier) @function) + (function_parameter name: (identifier) @variable.parameter) + ((function_call - function: (identifier) @function) - (#is-not? local)) + function: (identifier) @function) + (#is-not? local)) + ((binary_expression - operator: "|>" - right: (identifier) @function) - (#is-not? local)) + operator: "|>" + right: (identifier) @function) + (#is-not? local)) ; "Properties" ; Assumed to be intended to refer to a name for a field; something that comes ; before ":" or after "." ; e.g. record field names, tuple indices, names for named arguments, etc (label) @property + (tuple_access index: (integer) @property) @@ -54,10 +74,12 @@ "@" @attribute name: (identifier) @attribute) -(attribute_value (identifier) @constant) +(attribute_value + (identifier) @constant) ; Type names (remote_type_identifier) @type + (type_identifier) @type ; Data constructors @@ -65,19 +87,24 @@ ; Literals (string) @string + ((escape_sequence) @warning - ; Deprecated in v0.33.0-rc2: - (#eq? @warning "\\e")) + ; Deprecated in v0.33.0-rc2: + (#eq? @warning "\\e")) + (escape_sequence) @string.escape + (bit_string_segment_option) @function.builtin + (integer) @number + (float) @number ; Reserved identifiers ; TODO: when tree-sitter supports `#any-of?` in the Rust bindings, ; refactor this to use `#any-of?` rather than `#match?` ((identifier) @warning - (#match? @warning "^(auto|delegate|derive|else|implement|macro|test|echo)$")) + (#match? @warning "^(auto|delegate|derive|else|implement|macro|test|echo)$")) ; Keywords [ @@ -102,8 +129,12 @@ ; Operators (binary_expression operator: _ @operator) -(boolean_negation "!" @operator) -(integer_negation "-" @operator) + +(boolean_negation + "!" @operator) + +(integer_negation + "-" @operator) ; Punctuation [ @@ -116,10 +147,11 @@ "<<" ">>" ] @punctuation.bracket + [ "." "," - ;; Controversial -- maybe some are operators? + ; Controversial -- maybe some are operators? ":" "#" "=" diff --git a/extensions/test-extension/languages/gleam/indents.scm b/extensions/test-extension/languages/gleam/indents.scm index 112b414aa45..92f1a04d86d 100644 --- a/extensions/test-extension/languages/gleam/indents.scm +++ b/extensions/test-extension/languages/gleam/indents.scm @@ -1,3 +1,11 @@ -(_ "[" "]" @end) @indent -(_ "{" "}" @end) @indent -(_ "(" ")" @end) @indent +(_ + "[" + "]" @end) @indent + +(_ + "{" + "}" @end) @indent + +(_ + "(" + ")" @end) @indent diff --git a/extensions/test-extension/languages/gleam/outline.scm b/extensions/test-extension/languages/gleam/outline.scm index 5df7a6af800..2d1a7d800fb 100644 --- a/extensions/test-extension/languages/gleam/outline.scm +++ b/extensions/test-extension/languages/gleam/outline.scm @@ -1,31 +1,31 @@ (external_type - (visibility_modifier)? @context - "type" @context - (type_name) @name) @item + (visibility_modifier)? @context + "type" @context + (type_name) @name) @item (type_definition - (visibility_modifier)? @context - (opacity_modifier)? @context - "type" @context - (type_name) @name) @item + (visibility_modifier)? @context + (opacity_modifier)? @context + "type" @context + (type_name) @name) @item (data_constructor - (constructor_name) @name) @item + (constructor_name) @name) @item (data_constructor_argument - (label) @name) @item + (label) @name) @item (type_alias - (visibility_modifier)? @context - "type" @context - (type_name) @name) @item + (visibility_modifier)? @context + "type" @context + (type_name) @name) @item (function - (visibility_modifier)? @context - "fn" @context - name: (_) @name) @item + (visibility_modifier)? @context + "fn" @context + name: (_) @name) @item (constant - (visibility_modifier)? @context - "const" @context - name: (_) @name) @item + (visibility_modifier)? @context + "const" @context + name: (_) @name) @item