This commit is contained in:
2026-06-03 05:23:07 +02:00
commit a67da8c917
102 changed files with 9238 additions and 0 deletions
+372
View File
@@ -0,0 +1,372 @@
(function_declaration
body: (statement_block)) @function.outer
(generator_function_declaration
body: (statement_block)) @function.outer
(function_expression
body: (statement_block)) @function.outer
(function_declaration
body: (statement_block
.
"{"
_+ @function.inner
"}"))
(generator_function_declaration
body: (statement_block
.
"{"
_+ @function.inner
"}"))
(function_expression
body: (statement_block
.
"{"
_+ @function.inner
"}"))
(export_statement
(function_declaration)) @function.outer
(arrow_function
body: (_) @function.inner) @function.outer
(arrow_function
body: (statement_block
.
"{"
_+ @function.inner
"}"))
(method_definition
body: (statement_block)) @function.outer
(method_definition
body: (statement_block
.
"{"
_+ @function.inner
"}"))
(class_declaration
body: (class_body)) @class.outer
(class_declaration
body: (class_body
.
"{"
_+ @class.inner
"}"))
(export_statement
(class_declaration)) @class.outer
(for_in_statement
body: (statement_block
.
"{"
_+ @loop.inner
"}")) @loop.outer
(for_statement
body: (statement_block
.
"{"
_+ @loop.inner
"}")) @loop.outer
(while_statement
body: (statement_block
.
"{"
_+ @loop.inner
"}")) @loop.outer
(do_statement
body: (statement_block
.
"{"
_+ @loop.inner
"}")) @loop.outer
(if_statement
consequence: (statement_block
.
"{"
_+ @conditional.inner
"}")) @conditional.outer
(if_statement
alternative: (else_clause
(statement_block
.
"{"
_+ @conditional.inner
"}"))) @conditional.outer
(if_statement) @conditional.outer
(switch_statement
body: (_)? @conditional.inner) @conditional.outer
(call_expression) @call.outer
(call_expression
arguments: (arguments
.
"("
_+ @call.inner
")"))
(new_expression
constructor: (identifier) @call.outer
arguments: (arguments
.
"("
_+ @call.inner
")") @call.outer)
; blocks
(statement_block
(_)* @block.inner) @block.outer
; parameters
; function ({ x }) ...
; function ([ x ]) ...
; function (v = default_value)
(formal_parameters
"," @parameter.outer
.
(_) @parameter.inner @parameter.outer)
(formal_parameters
.
(_) @parameter.inner @parameter.outer
.
","? @parameter.outer)
; last element with trailing comma
(formal_parameters
(_) @parameter.outer
.
"," @parameter.outer .)
; If the array/object pattern is the first parameter, treat its elements as the argument list
(formal_parameters
.
(_
[
(object_pattern
"," @parameter.outer
.
(_) @parameter.inner @parameter.outer)
(array_pattern
"," @parameter.outer
.
(_) @parameter.inner @parameter.outer)
]))
(formal_parameters
.
(_
[
(object_pattern
.
(_) @parameter.inner @parameter.outer
.
","? @parameter.outer)
(array_pattern
.
(_) @parameter.inner @parameter.outer
.
","? @parameter.outer)
]))
; last element with trailing comma
(formal_parameters
.
(_
[
(object_pattern
(_) @parameter.outer
.
"," @parameter.outer .)
(array_pattern
(_) @parameter.outer
.
"," @parameter.outer .)
]))
; arguments
(arguments
"," @parameter.outer
.
(_) @parameter.inner @parameter.outer)
(arguments
.
(_) @parameter.inner @parameter.outer
.
","? @parameter.outer)
; last element with trailing comma
(arguments
(_) @parameter.outer
.
"," @parameter.outer .)
; comment
(comment) @comment.outer
; regex
(regex
(regex_pattern) @regex.inner) @regex.outer
; number
(number) @number.inner
(lexical_declaration
(variable_declarator
name: (_) @assignment.lhs
value: (_) @assignment.inner @assignment.rhs)) @assignment.outer
(variable_declarator
name: (_) @assignment.inner)
(object
(pair
key: (_) @assignment.lhs
value: (_) @assignment.inner @assignment.rhs) @assignment.outer)
(return_statement
(_) @return.inner) @return.outer
(return_statement) @statement.outer
[
(if_statement)
(expression_statement)
(for_statement)
(while_statement)
(do_statement)
(for_in_statement)
(export_statement)
(lexical_declaration)
] @statement.outer
; 1. default import
(import_statement
(import_clause
(identifier) @parameter.inner @parameter.outer))
; 2. namespace import e.g. `* as React`
(import_statement
(import_clause
(namespace_import
(identifier) @parameter.inner) @parameter.outer))
; 3. named import e.g. `import { Bar, Baz } from ...`
(import_statement
(import_clause
(named_imports
(import_specifier) @parameter.inner)))
; 3A. named import followed by a comma
(import_statement
(import_clause
(named_imports
(import_specifier) @parameter.outer
.
"," @parameter.outer)))
; 3B. comma followed by named import
(import_statement
(import_clause
(named_imports
"," @parameter.outer
.
(import_specifier) @parameter.outer)))
; 3-C. only one named import without a comma
(import_statement
(import_clause
(named_imports
.
(import_specifier) @parameter.outer .)))
; Treat list or object elements as @parameter
; 1. parameter.inner
(object
(_) @parameter.inner)
(array
(_) @parameter.inner)
(object_pattern
(_) @parameter.inner)
(array_pattern
(_) @parameter.inner)
; 2. parameter.outer: Only one element, no comma
(object
.
(_) @parameter.outer .)
(array
.
(_) @parameter.outer .)
(object_pattern
.
(_) @parameter.outer .)
(array_pattern
.
(_) @parameter.outer .)
; 3. parameter.outer: Comma before or after
[
(object
"," @parameter.outer
.
(_) @parameter.outer)
(array
"," @parameter.outer
.
(_) @parameter.outer)
(object_pattern
"," @parameter.outer
.
(_) @parameter.outer)
(array_pattern
"," @parameter.outer
.
(_) @parameter.outer)
]
[
(object
.
(_) @parameter.outer
.
"," @parameter.outer)
(array
.
(_) @parameter.outer
.
"," @parameter.outer)
(object_pattern
.
(_) @parameter.outer
.
"," @parameter.outer)
(array_pattern
.
(_) @parameter.outer
.
"," @parameter.outer)
]