mirror of
https://github.com/helix-editor/helix
synced 2026-08-05 02:33:01 +02:00
50 lines
1.3 KiB
Scheme
50 lines
1.3 KiB
Scheme
; Scopes
|
|
|
|
[
|
|
(method_declaration)
|
|
(constructor_declaration)
|
|
(compact_constructor_declaration)
|
|
(lambda_expression)
|
|
(for_statement)
|
|
(enhanced_for_statement)
|
|
(block)
|
|
] @local.scope
|
|
|
|
; Definitions
|
|
|
|
(formal_parameter
|
|
name: (identifier) @local.definition.variable.parameter)
|
|
; `Type... name` — the name lives in a variable_declarator child, not a `name:` field.
|
|
(spread_parameter
|
|
(variable_declarator
|
|
name: (identifier) @local.definition.variable.parameter))
|
|
(catch_formal_parameter
|
|
name: (identifier) @local.definition.variable.parameter)
|
|
; Lambda params: `x -> …` (single bare identifier) and `(x, y) -> …` (inferred).
|
|
(lambda_expression
|
|
parameters: (identifier) @local.definition.variable.parameter)
|
|
(inferred_parameters
|
|
(identifier) @local.definition.variable.parameter)
|
|
|
|
(local_variable_declaration
|
|
(variable_declarator
|
|
name: (identifier) @local.definition.variable))
|
|
(enhanced_for_statement
|
|
name: (identifier) @local.definition.variable)
|
|
|
|
; References
|
|
|
|
(identifier) @local.reference
|
|
|
|
; Discards: identifiers that look like references but aren't variables.
|
|
|
|
; `obj.method(…)` — the method name is not a variable.
|
|
(method_invocation
|
|
name: (identifier) @_)
|
|
; `obj.field` — the field name is not a local.
|
|
(field_access
|
|
field: (identifier) @_)
|
|
; `Outer.name` qualified access.
|
|
(scoped_identifier
|
|
name: (identifier) @_)
|