Files
nixos-dotfiles/config/nvim/queries/ecma/textobjects.scm
T
2026-06-03 05:23:07 +02:00

373 lines
6.3 KiB
Scheme
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
(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)
]