From 5ed538f49c54ca464bb9d1e59446060a3a925668 Mon Sep 17 00:00:00 2001 From: Finn Evers Date: Fri, 27 Feb 2026 13:49:45 +0100 Subject: [PATCH] Format Tree-sitter queries with `ts_query_ls` (#50138) Release Notes: - N/A --- crates/languages/src/bash/brackets.scm | 74 +- crates/languages/src/bash/highlights.scm | 27 +- crates/languages/src/bash/indents.scm | 21 +- crates/languages/src/bash/injections.scm | 3 +- crates/languages/src/bash/overrides.scm | 1 + crates/languages/src/bash/redactions.scm | 2 +- crates/languages/src/bash/runnables.scm | 8 +- crates/languages/src/bash/textobjects.scm | 2 +- crates/languages/src/c/brackets.scm | 21 +- crates/languages/src/c/highlights.scm | 8 +- crates/languages/src/c/imports.scm | 12 +- crates/languages/src/c/indents.scm | 16 +- crates/languages/src/c/injections.scm | 11 +- crates/languages/src/c/outline.scm | 138 +- crates/languages/src/c/overrides.scm | 1 + crates/languages/src/c/runnables.scm | 12 +- crates/languages/src/c/textobjects.scm | 39 +- crates/languages/src/cpp/brackets.scm | 25 +- crates/languages/src/cpp/highlights.scm | 33 +- crates/languages/src/cpp/imports.scm | 9 +- crates/languages/src/cpp/indents.scm | 32 +- crates/languages/src/cpp/injections.scm | 11 +- crates/languages/src/cpp/outline.scm | 319 ++-- crates/languages/src/cpp/overrides.scm | 1 + crates/languages/src/cpp/textobjects.scm | 49 +- crates/languages/src/css/brackets.scm | 21 +- crates/languages/src/css/highlights.scm | 32 +- crates/languages/src/css/indents.scm | 4 +- crates/languages/src/css/injections.scm | 3 +- crates/languages/src/css/outline.scm | 24 +- crates/languages/src/css/overrides.scm | 1 + crates/languages/src/css/textobjects.scm | 41 +- crates/languages/src/diff/highlights.scm | 8 +- crates/languages/src/diff/injections.scm | 2 +- crates/languages/src/gitcommit/highlights.scm | 28 +- crates/languages/src/gitcommit/injections.scm | 7 +- crates/languages/src/go/brackets.scm | 25 +- crates/languages/src/go/debugger.scm | 42 +- crates/languages/src/go/highlights.scm | 8 +- crates/languages/src/go/imports.scm | 20 +- crates/languages/src/go/indents.scm | 20 +- crates/languages/src/go/injections.scm | 1357 ++++++++--------- crates/languages/src/go/outline.scm | 94 +- crates/languages/src/go/overrides.scm | 1 + crates/languages/src/go/runnables.scm | 407 ++--- crates/languages/src/go/textobjects.scm | 31 +- crates/languages/src/gomod/highlights.scm | 4 +- crates/languages/src/gomod/injections.scm | 2 +- crates/languages/src/gomod/structure.scm | 30 +- crates/languages/src/gowork/highlights.scm | 4 +- crates/languages/src/gowork/injections.scm | 2 +- crates/languages/src/javascript/brackets.scm | 38 +- crates/languages/src/javascript/debugger.scm | 52 +- .../languages/src/javascript/highlights.scm | 180 ++- crates/languages/src/javascript/imports.scm | 24 +- crates/languages/src/javascript/indents.scm | 38 +- .../languages/src/javascript/injections.scm | 162 +- crates/languages/src/javascript/outline.scm | 386 ++--- crates/languages/src/javascript/overrides.scm | 3 +- crates/languages/src/javascript/runnables.scm | 80 +- .../languages/src/javascript/textobjects.scm | 120 +- crates/languages/src/jsdoc/brackets.scm | 7 +- crates/languages/src/jsdoc/highlights.scm | 2 + crates/languages/src/json/brackets.scm | 12 +- crates/languages/src/json/highlights.scm | 1 + crates/languages/src/json/indents.scm | 7 +- crates/languages/src/json/outline.scm | 3 +- crates/languages/src/json/redactions.scm | 15 +- crates/languages/src/json/runnables.scm | 32 +- crates/languages/src/jsonc/brackets.scm | 12 +- crates/languages/src/jsonc/highlights.scm | 1 + crates/languages/src/jsonc/indents.scm | 7 +- crates/languages/src/jsonc/injections.scm | 2 +- crates/languages/src/jsonc/outline.scm | 3 +- crates/languages/src/jsonc/overrides.scm | 1 + crates/languages/src/jsonc/redactions.scm | 15 +- .../src/markdown-inline/highlights.scm | 17 +- crates/languages/src/markdown/brackets.scm | 31 +- crates/languages/src/markdown/highlights.scm | 21 +- crates/languages/src/markdown/indents.scm | 3 +- crates/languages/src/markdown/injections.scm | 8 +- crates/languages/src/markdown/outline.scm | 7 +- crates/languages/src/markdown/textobjects.scm | 4 +- crates/languages/src/python/brackets.scm | 16 +- crates/languages/src/python/debugger.scm | 102 +- crates/languages/src/python/highlights.scm | 137 +- crates/languages/src/python/imports.scm | 64 +- crates/languages/src/python/indents.scm | 26 +- crates/languages/src/python/outline.scm | 11 +- crates/languages/src/python/overrides.scm | 1 + crates/languages/src/python/runnables.scm | 223 ++- crates/languages/src/regex/brackets.scm | 11 +- crates/languages/src/regex/highlights.scm | 3 +- crates/languages/src/rust/brackets.scm | 30 +- crates/languages/src/rust/debugger.scm | 87 +- crates/languages/src/rust/highlights.scm | 104 +- crates/languages/src/rust/imports.scm | 30 +- crates/languages/src/rust/indents.scm | 34 +- crates/languages/src/rust/injections.scm | 97 +- crates/languages/src/rust/outline.scm | 94 +- crates/languages/src/rust/overrides.scm | 1 + crates/languages/src/rust/runnables.scm | 153 +- crates/languages/src/rust/textobjects.scm | 81 +- crates/languages/src/tsx/brackets.scm | 46 +- crates/languages/src/tsx/debugger.scm | 56 +- crates/languages/src/tsx/highlights.scm | 201 +-- crates/languages/src/tsx/imports.scm | 24 +- crates/languages/src/tsx/indents.scm | 38 +- crates/languages/src/tsx/injections.scm | 165 +- crates/languages/src/tsx/outline.scm | 391 ++--- crates/languages/src/tsx/overrides.scm | 10 +- crates/languages/src/tsx/runnables.scm | 80 +- crates/languages/src/tsx/textobjects.scm | 162 +- crates/languages/src/typescript/brackets.scm | 30 +- crates/languages/src/typescript/debugger.scm | 52 +- .../languages/src/typescript/highlights.scm | 216 ++- crates/languages/src/typescript/imports.scm | 33 +- crates/languages/src/typescript/indents.scm | 39 +- .../languages/src/typescript/injections.scm | 232 +-- crates/languages/src/typescript/outline.scm | 391 ++--- crates/languages/src/typescript/overrides.scm | 10 +- crates/languages/src/typescript/runnables.scm | 140 +- .../languages/src/typescript/textobjects.scm | 162 +- crates/languages/src/yaml/brackets.scm | 17 +- crates/languages/src/yaml/highlights.scm | 32 +- crates/languages/src/yaml/injections.scm | 29 +- crates/languages/src/yaml/outline.scm | 14 +- crates/languages/src/yaml/overrides.scm | 1 + crates/languages/src/yaml/redactions.scm | 3 +- .../src/zed-keybind-context/brackets.scm | 3 +- extensions/glsl/languages/glsl/brackets.scm | 11 +- extensions/glsl/languages/glsl/highlights.scm | 62 +- extensions/html/languages/html/highlights.scm | 5 + extensions/html/languages/html/indents.scm | 7 +- extensions/html/languages/html/injections.scm | 19 +- extensions/html/languages/html/overrides.scm | 1 + .../proto/languages/proto/highlights.scm | 6 +- extensions/proto/languages/proto/indents.scm | 14 +- extensions/proto/languages/proto/outline.scm | 24 +- .../proto/languages/proto/textobjects.scm | 18 +- .../languages/gleam/highlights.scm | 66 +- .../languages/gleam/indents.scm | 14 +- .../languages/gleam/outline.scm | 36 +- 143 files changed, 4774 insertions(+), 3778 deletions(-) diff --git a/crates/languages/src/bash/brackets.scm b/crates/languages/src/bash/brackets.scm index 88a2a1b67f602afb4e7de21a0ec0a523d33e37ee..aba1fa2b35735d4380761ea6e1360305556072b3 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 4a8d7eaf345b147270302b5ba8f20c975494766e..bc1c3b7ec1159f6d19cdf20ab36e0a02db076c66 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 468fc595e56e2616547dc3e752318cd89df4a363..25a0dc20fd7fff62cd355d20917260e8e781e90e 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 9117c713b98fdd2896b13e4949a77c6489b9ee36..2f0e58eb6431515b86b6042e5828263341513e99 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 81fec9a5f57b28fc67b4781ec37df43559e21dc9..544e9876f8ea8f1d676ee21731fdcb30fc7163ec 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 000cb042a573112a7d3c46f56862ba4119fdfdf3..5c2c83aa666e31ae23b7e54f966638f41f98244e 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 c88e549347b4d4897c43d22d24550f3904d8c5d1..3856495422dcd84b9c3619d34778e2183aae8498 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 cca2f7d9e9e4a876984a602ee308ad7270b684dc..9a5e4853ee711abbc7407185a6da19b0c9cc3fef 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 2149bddc6c9a7ec04667d03da75580b676e12a28..313d212a5eb28d006775781576d50e359be675a2 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 e426bd4f9048a96c09aef297f95c420c9ec21458..dc5a3bd99937eb3cd1a3af6efb7124aebc4008f1 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 c3c2c9e68c4503d323d039f9c042d9501b5e4126..2aaab2106f5422db426876a7fa65c9674fe93174 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 b6d3c3c3bf7d1a05fd90667e42418bf9a389f8fb..0b55631e5ca6cdfca377f5bf4018d751cdf31bf4 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 9ec3cf1f780123426f681ad758179b81697e59c5..010c697f08adec1d196833b4de492027a80960a4 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 efd911836cb718d698460adfe2d91d19cb976b30..abc9608343826545b9ebfd5f915d6352943911f6 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 36473eb300fd01370e1947873435a821e2d6417a..7c4cf69697200efa1cedd59b895d5ebd064ce486 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 5a203f5d7a6eea3ab831a1b4281a74d3795ca74f..50c5ef5b71b4df5d0735a6a5019e9aee5a19f083 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 e29f508b701c8ee22eec27af47d899d446e67860..fd5ec0b49b7484a8ef2cbb7cb321f7020bdaeff8 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 9eaebba332861ef716902b3827d4940b71f37221..e0330c9b1f2ebdd45480c54e9053503a6b6f611b 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 dbb79e69b04e351ca231b45b21507e305b2cabf5..e074707d05dec638a1be9ea840c31f47537c438a 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 a4ef817a80dbcd44336bdd8cd681587662aad435..43adde711b5352ef0d92566d4bdde91a847319b8 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 985ebda6ffe679f479804d667db011587eacb2f9..0b55631e5ca6cdfca377f5bf4018d751cdf31bf4 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 60c6ea7b63eb6dcb7e1bae02c66045266c0b6cd5..0f622d4edbada60d162e14260dfb1d05423cd503 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 75be97a916dca9f10b044ee9dc01eca09e6372ec..041ff7d1b02ec0be14aead872c5436b2c897e125 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 36473eb300fd01370e1947873435a821e2d6417a..7c4cf69697200efa1cedd59b895d5ebd064ce486 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 027185a0cfab7b71f3dcd6a5d5507445e2778d34..61260cd814689aef68ca785132929963eb12d54f 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 2149bddc6c9a7ec04667d03da75580b676e12a28..313d212a5eb28d006775781576d50e359be675a2 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 8fbb9f47d2bcdde1a3b20a184885efb5382557a8..b9d708b661b221544fb58a767981d868d33cb9f7 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 e9754690920500f55e611f981e46d0365560eb4f..a768bb040790087fa905c09a436e81c923db240a 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 9117c713b98fdd2896b13e4949a77c6489b9ee36..2f0e58eb6431515b86b6042e5828263341513e99 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 645616f9056d0cc9e85232e94f5d0666809884c6..6e6e9d3a03c7efd4e7d1814e74705ba3c34e20a1 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 e5eade479723c33894b6165085603631bdfe8c64..7ca202fd7bc3db34dd71d5ae7893efe853101ced 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 c9c6207b851e6b4c5908ce7d664616798db27f3b..88ae6bb8423feec432de6e168507233c1f293b09 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 4a344389032b9ff12f7c00e42adffb00721737e1..a2e33190f154d6a210572dbb066000dca6f30455 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 01e833d1e31d480b66a558bdfb8f07b2f0cdbc46..2f0e58eb6431515b86b6042e5828263341513e99 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 8670a6615aa49b8062a1ef2375884bf298b1df76..750a400f2b147c459d1a7932cd476286dc8189fc 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 8fb9b459679489be7588d1ab9b6d53e40ea10c60..07c2dd95ca69642b15a7a778ab7e0caad47586cb 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 05fb1d7f9219889d652bbdbb294ca45e72cc9c05..6bee4099173ee83cc03e4f1d24d7000d102880fb 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 f22b91f938e1159fa9bfec99f5000976766faf06..306b0448a7d817040562152b39d410100b207f1a 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 15a512d6b7e359bf7290aee9d433f1ae7be352ec..670b4f05a961e35d3826c294d061ea7757fd1c0f 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 7f0ff2d46e6a271d4258d23f46cc942830e2c6f9..23e480c10b20b76c6724df29a550e627c2aee799 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 abbb72eb379d5fbb52267a633c60def07895a081..21e8cf7abbc1420ba94063a7ae6655ec0daa9baa 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 58583f4d22c7db8016397d8e47cd817b7c240764..73cf0bd352de0213f9a0d1efff300039f52a0697 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 c745f55aff7dcd4b3bfd802884db7a985c1387fa..da42904fab942635b1140b486dde0c25694147d3 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 aae1520301bbb2a04b04f930b747d290051bc9cc..7989c4271f0ec9f18a6f75315f01d13454fca7b9 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 786a923566d433f20b042178df2609e993e6da15..d00be6e1d0db4b8fd97596002099525128458a7f 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 eb4f3a00501021167c3c2b9136d5cef2f131878f..4e0a78991a4b1ca49f48b0c1c73c51ff5e002f50 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 03be1b5957160820033d93b35b39d4329b7890a6..f026035cb126382274e783ece2515148b6cffd73 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 321c90add3710f35721daeb6b42abe38af094953..2f0e58eb6431515b86b6042e5828263341513e99 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 ce1bc9aa3ee0b1f77086103bad91825b5927005f..2da1b0d5e643d2235b9555c15cfe3624f14758f2 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 9c84bcc4496394817190a86fa8cd4995b39475a2..b9d3d42e630c5c4f4eb877a330a15371ceb4d96a 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 321c90add3710f35721daeb6b42abe38af094953..2f0e58eb6431515b86b6042e5828263341513e99 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 a16a6432692ec7b9e0e3d24151cb814fc11bd83d..69acbcd614e440d8e8e2010f1677e52cb651e15e 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 a99f194a4a4130210b47f8170fca039acc163411..8f384fd8ad9e07fea89972464e64b905086bf580 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 5fb31ce100b5884d99d3e941ce6fb67b69ff2cfd..4824684177ae2fe8c5b2f1d582b4d443216b9519 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 - ) - ] -) - -(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) + 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_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 e26b97aeef9cb62395e7030f3173208d79187bd6..0e688d53fb6ed639c55c1fa84917711d19c3108a 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 9897f3060eaf37891cf4563cebc93345112422f8..1e72160bca2f5fd04ce6d3bc7b02e9ab029eb018 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 244e025a6f5d62f1d3500fc35fc480b1baa2471e..8ccfc5028dea453013134c52db885d51ab2f673b 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 5f72103bc63bdfab73f7b858c01abe8d34317b22..7b8e4b2d46c9b88e6b719ceea5bb64eeb19af518 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 6dbbc88ef924c2cac65aaf9ff7e7dba87b99a359..4707e2a89fdd246de8d0152d6284e188caaf539e 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 c64aacb50e286b1aeeb1231f2745d4d5923a7c1d..b410fb4d8cadd879f657f20a4685cf3bf834ad86 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 eace658e6b9847bcc651deedad2bc27cbfbf6975..f1cc9c9491e20320d193de5dec2a9c438cee5dcc 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 0e1bf5ca191bf7a319e2bcad6673d5cf0401380c..0f6ce4bf3d4c9c903d092fc669a416e83c44e82d 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 581b5d8111fe25443de9951cfdddc8c277ad83ff..4b5657cb2d3fa6651e2e2b7eb495c095c0ae8482 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 cd5cdf328b3a04730d56ec0cb06c3802fe07c978..ac2e2ad37bfc6cd2e72323914f6975c5d3cdb60e 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 1098320ccba78c143b43c7608b1d4e41ad5ec20d..f9b1c337358d26f08fe5b77b3a6e1a70b3f5b418 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 b7b2a2e7670f324730a64e15f1f59f37ac126270..63b015c2fe74dda013e201d88ebbfe06107def4a 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 43e2743478b27e4430bf3ddf82e49023d3bad584..c7f988077767819128b6f028fbcf196dcf5a5678 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 7359637244ac5892c0d57b41e2ef11652a3d0890..c220d0c18b79e007a6de511099254c59214ace74 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 2396f05a5722f422f46fda8bb09e8b4e25bdb794..a0d95d89b577bf3f5a22b3ff6cedcd7945b4881b 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 cd5cdf328b3a04730d56ec0cb06c3802fe07c978..ac2e2ad37bfc6cd2e72323914f6975c5d3cdb60e 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 1098320ccba78c143b43c7608b1d4e41ad5ec20d..f9b1c337358d26f08fe5b77b3a6e1a70b3f5b418 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 b7b2a2e7670f324730a64e15f1f59f37ac126270..63b015c2fe74dda013e201d88ebbfe06107def4a 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 01e833d1e31d480b66a558bdfb8f07b2f0cdbc46..2f0e58eb6431515b86b6042e5828263341513e99 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 43e2743478b27e4430bf3ddf82e49023d3bad584..c7f988077767819128b6f028fbcf196dcf5a5678 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 81fec9a5f57b28fc67b4781ec37df43559e21dc9..544e9876f8ea8f1d676ee21731fdcb30fc7163ec 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 7359637244ac5892c0d57b41e2ef11652a3d0890..c220d0c18b79e007a6de511099254c59214ace74 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 3c9f6fbcc340bd085466055c7b35551dd71b8c53..26c066ea0a0f6cc93073f6d525d44f2a6456fd49 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 172a2e7f723e3a170d80d19fa2f78fa334258105..5aaf93f63da3502c41b43027ee615592521c94ae 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 707bcc0816366f5cc875c9f1197b42a2363cab99..1a471a848dfe0c9457ab23ba9dbf3fd9e8438f7d 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 dc6dfa6118309c264e146a5af167327947fc6946..742100e3238b6dc7d456307762b2089bb780ac33 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 f2b959dfdae9d5b0c11146c2f2e5509005a2fe5e..46717b28a97a2019f3bcd6b01815debccb3c3e30 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 dcca3db4d4cb920a7d9f939dc99197d139c3c2e6..a4d8c586dd991f4ada1b7cffa1b2319eb79a7973 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 e0f76c5365155687d6d53d38f222513b480a3aa7..c84914b2409dd53c27e22c33d8ca9771b699f48d 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 9e5b59788fc88fcb0830325417de50a9414828b8..5abcf6bdd43624f625e3c08444701fa67311c00f 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 807d6e865d2f60637f60b397ccc1a61fe3360fa1..8c241f8cae0e4c1e2ea39311dd86fda2ba6978dc 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 f15b3a0e2b03d9c913627b319aff9bca6bb8708e..87283aaa799a15ea188f3427b4277e9eaba517c1 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 7a1e2b225b9e310098f316c29fe6b1a27634bf12..26538fee1b41df13f258c8b315cc5e266458efa1 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 3d4c1cc9c4260d4e925cc373662ae5ca3b82e124..9361aa7158725b22e40040e7d730d2693c688c97 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 70beb4e67585918ca1f893140ec79ee2428d47d7..c335eef46545fcc0b493e66c780b6ecf839bd791 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 81fec9a5f57b28fc67b4781ec37df43559e21dc9..544e9876f8ea8f1d676ee21731fdcb30fc7163ec 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 1c7e76d73be2357c71ac2f3adf41b14db969e262..3480d4a81017605da2f7cd473595d339f5d522a8 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 191fd9c084a52eced37428281971ff9e569a4932..3779d8514bdee9fed0abe1f14b98851754decd8c 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 b5adecf472941154ae84d2acb62fea218859bbea..b0df4b98be08214554dd58a1dcfd1aab0b06586b 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 7a35adb10021c83b8e08e888187ab133c5313ad9..9d78bb11116a0cbff542c721596ec6f8fc92d0cb 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 5347413f698083287b9bedd25f4732d24fbbf76e..3c7195796feb41a771ec8071d78bea60efb61fd9 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) + +(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) + +(if_expression + (identifier) @debug-variable) -(if_expression (identifier) @debug-variable) -(while_expression (identifier) @debug-variable) +(while_expression + (identifier) @debug-variable) -(parenthesized_expression (identifier) @debug-variable) +(parenthesized_expression + (identifier) @debug-variable) -(arguments (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 82008d701536177cbe7cab8d6fc6c82e0568e944..57e5ed3f704dcd70974b73e0a0d4e31253191048 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) - -(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_]*$")) -])) +(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_]*$")) + ])) + +(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 3ce6a4f073506dd4d27320a7fd5bb547927f9c1a..2c368523d63b9c6ae9494b1ab801192161fd7000 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) + path: (_) @namespace + name: (identifier) @name) -(use_list (identifier) @name) +(use_list + (identifier) @name) -(use_declaration (identifier) @name) +(use_declaration + (identifier) @name) (use_as_clause - path: (scoped_identifier - path: (_) @namespace - name: (_) @name) - alias: (_) @alias) + 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 9ab6b029083fd5d8e3249916c00a5f90648eb3e2..b4ef2ebcd78016de1092e718385ab52a89273003 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 88df78d793c5666492b0f3917d78b4210be5e094..89d839282d3388f450f9ebdb923167f0986f349c 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 a99f53dd2b3154aa3717f67fd683da4a8b57d31b..03ecb99facdc99cb0be8e2fb6bd4e177cb936b4e 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 91fa6139d387db97676cd32a84433b16f3c8e94e..039425a91d519b2b4b030a37ad9e71705833820e 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 7c1571614424161ec866f5fa2607ea55975500e2..ef7050397df586ebb96c2648ea3be282d246e5aa 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 4e7e7fa0cd1ba4393bc99998e38e940f751aef97..97a90a54f800942eb733a9bd494b6e56e191a3ec 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 0e98b78036b4b19fd63d812fa92d2416788764f4..d72fcb26005a0021907558bbbee7471cfeaec603 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)) - -((jsx_element (jsx_opening_element) @open (jsx_closing_element) @close) (#set! newline.only) (#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)) + +((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 3e73dc839e4e5fc5ccc1654e96b327bc8181a2e8..5a6ab143d0dbed601534cc214bd017fcf5c29a41 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 a96bf96281fd90a77a3411d1ad909f22c12ac0df..056956199ef26faea0c9fc09467f48c19a712b14 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 - ) - ] -) - -(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) + 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_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 e26b97aeef9cb62395e7030f3173208d79187bd6..0e688d53fb6ed639c55c1fa84917711d19c3108a 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 9897f3060eaf37891cf4563cebc93345112422f8..1e72160bca2f5fd04ce6d3bc7b02e9ab029eb018 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 2cf3ea69ca2fd95402eba6fadb85f3505c5562b7..fda53263f575238051d325cd5820a285f8f24259 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 54d29007c7b7eb57c0bcaefc2c1e0ab75e4d9a6c..37991965256a0def9b0458958ac4e50c6f337af6 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 f5a51af33fee340762d6b689e78d2e94e9c84901..759ffe8703ff27f53e5ccadb3eb4687a279f21f8 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 85702cf99d9968b29f9375bfd8215ecba53f2eb5..db1f69a2c22e5a5dbcf7892f6c02158260c764e9 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 628a921f3ac9ea04ff59654d72caf73cebbc9071..7a3a4768d94f495f9654d7ba1c182d3f7a47dcb4 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 635233849142d8951edeca02ca0c79253aa91e80..2f6f3a133fbe47abfcf54473beff0c73c04afaf4 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 a99f194a4a4130210b47f8170fca039acc163411..8f384fd8ad9e07fea89972464e64b905086bf580 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 8ec3ec26cca805c65d68d9df08037102a32494dc..55eb9119e4963957e77aa1791d2a51aadd8d2890 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 68ca25b2c15b7e312edbc3eeb9b2f0e493ca2d6f..de8f8db418157511d5756d6b5ede1a02a03bd831 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 b4ac50bf5ac0bf1871523cabc9ee3683a28cd0f3..2715d2567194f00a9566e9b0c385ae8aa6258df0 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 91880407900e7407e46982a54dbeaa3e30277bdd..a8cf9a41b5f90a6b9d02358b1b6073286fbe86ac 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"))) -) - -;; Angular Component template injection + function: (identifier) @_name + (#match? @_name "^iso$") + arguments: (arguments + (template_string + (string_fragment) @injection.content + (#set! injection.language "isograph")))) + +; 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 54d29007c7b7eb57c0bcaefc2c1e0ab75e4d9a6c..37991965256a0def9b0458958ac4e50c6f337af6 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 8f437a1424af06aa4855aac67511926181977936..f5e99cad68a91695d9d0b19b308e3ce19f75555a 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 6bfc53632910ce8212f739d310e3d560d05cffc1..38fee610e85f2aa2f5f7f7c58caf79b3c6a3d1ed 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 96289f058cd7b605a8f5b4c8966e3c372022d065..384ea482352dfb1f617357bd3af719a64425d876 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 0cfc5072d4eeda19d75ce943481670a3ee8938b0..edeb53a0d313846089e716bedff4256e2b47d94e 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 dfecf3f9d421cf1a574ce03dccfeb1201d8086a9..1d9c97c17a7925e5e9d87ed8e3bfba51c9b11d8b 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 c9de25a18f8afb7d8e0c6874401798edede9bce1..2b94b7f0cdd9d18c3c7157d9bd4adfd1b59ea061 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 c5a7f8e5d40388c020ec9dab83d6cee02746b581..a41447bf64cceadd1ae3d59bd2804e85bd5e8c39 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 9503051a62080eb2fdfca3416ef9e5286464dd17..99c991e7d445137dc335275138a8fd68cea31d17 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 85fdbd26ea0fc0b3956652ef48c61a44613337e4..56c7415e70f183afe63950511479e74512ac97f8 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 d086b2e98df0837208a13f6c6f79db84c204fb99..24c20234b639f2afe7754b1d6dceb5685ac7b8e7 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 62e137ef2629f3b7f7aeafbad419a36d19361d19..e83d67f411a71f2602dc774531d904a949c45b9a 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 09f94d4fb587963254c9bc31ec25b66a0e1e4323..9e40610ff5494102f8524b287ad2e50ec48d78db 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 bb3b43e813929de705605e3ecc3e0b1052c48297..21bf193cf346313024ba8df6e7457c785e21476e 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 436663dba3e1993c84e151f09c581844fdcb977a..6e5bf97d4c3edeb251cdcffdaf6c9f9659d39849 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 525b3efe29dca541afc8829dd41ff217f48439c3..e9c2c98155768fdee9a4fcefe672bebf7d4ce8f4 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 434f610e70242be8589a9f58cc7fd4704d5d9296..3e9e499e5c95b960e7ec9fe4e46bb078b8043092 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 923e00bb1dfca30afcf41a6ab681846d8f20b900..f17c48127380a4c314f4d5b8498b16d4c9d85be6 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 acb44a5e1e617cc0d735228af022129c0b39d561..c096b82d2b2d6856bcb6c39bf44212507b605e38 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 f90b1bae33effade920bf8f2c76d7f2d187f1d8e..f0aa6eff9801cdbfe8f61395901cfb96806e10a7 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 90ea84282da39df8a2023108c367c3ef76a0ef9a..7e859c0d65bd5d119b616d626f3d88ee6d1fc6ee 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 4b85b88d0151a1bfe9018f0c526497261d6e1801..50de3a6acbe6a8b65340d288334aa7185afc8609 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 112b414aa45f277138d0c681851129a608ee96e0..92f1a04d86d34d60763cceb872c5ac1004ba4601 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 5df7a6af800e8e3c9f0b00834576f2e059bd12b0..2d1a7d800fb9c662f41a0a865e492716b876f2fd 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