175 lines
3.2 KiB
Scheme
175 lines
3.2 KiB
Scheme
; inner function textobject
|
|
(function_declaration
|
|
body: (block
|
|
.
|
|
"{"
|
|
.
|
|
(_) @_start @_end
|
|
(_)? @_end
|
|
.
|
|
"}"
|
|
(#make-range! "function.inner" @_start @_end)))
|
|
|
|
; inner function literals
|
|
(func_literal
|
|
body: (block
|
|
.
|
|
"{"
|
|
.
|
|
(_) @_start @_end
|
|
(_)? @_end
|
|
.
|
|
"}"
|
|
(#make-range! "function.inner" @_start @_end)))
|
|
|
|
; method as inner function textobject
|
|
(method_declaration
|
|
body: (block
|
|
.
|
|
"{"
|
|
.
|
|
(_) @_start @_end
|
|
(_)? @_end
|
|
.
|
|
"}"
|
|
(#make-range! "function.inner" @_start @_end)))
|
|
|
|
; outer function textobject
|
|
(function_declaration) @function.outer
|
|
|
|
; outer function literals
|
|
(func_literal
|
|
(_)?) @function.outer
|
|
|
|
; method as outer function textobject
|
|
(method_declaration
|
|
body: (block)?) @function.outer
|
|
|
|
; struct and interface declaration as class textobject?
|
|
(type_declaration
|
|
(type_spec
|
|
(type_identifier)
|
|
(struct_type
|
|
(field_declaration_list
|
|
(_)?) @class.inner))) @class.outer
|
|
|
|
(type_declaration
|
|
(type_spec
|
|
(type_identifier)
|
|
(interface_type) @class.inner)) @class.outer
|
|
|
|
; struct literals as class textobject
|
|
(composite_literal
|
|
(type_identifier)?
|
|
(struct_type
|
|
(_))?
|
|
(literal_value
|
|
(_)) @class.inner) @class.outer
|
|
|
|
; conditionals
|
|
(if_statement
|
|
alternative: (_
|
|
(_) @conditional.inner)?) @conditional.outer
|
|
|
|
(if_statement
|
|
consequence: (block)? @conditional.inner)
|
|
|
|
(if_statement
|
|
condition: (_) @conditional.inner)
|
|
|
|
; loops
|
|
(for_statement
|
|
body: (block)? @loop.inner) @loop.outer
|
|
|
|
; blocks
|
|
(_
|
|
(block) @block.inner) @block.outer
|
|
|
|
; statements
|
|
(block
|
|
(_) @statement.outer)
|
|
|
|
; comments
|
|
(comment) @comment.outer
|
|
|
|
; calls
|
|
(call_expression) @call.outer
|
|
|
|
(call_expression
|
|
arguments: (argument_list
|
|
.
|
|
"("
|
|
.
|
|
(_) @_start
|
|
(_)? @_end
|
|
.
|
|
")"
|
|
(#make-range! "call.inner" @_start @_end)))
|
|
|
|
; parameters
|
|
(parameter_list
|
|
"," @_start
|
|
.
|
|
(parameter_declaration) @parameter.inner
|
|
(#make-range! "parameter.outer" @_start @parameter.inner))
|
|
|
|
(parameter_list
|
|
.
|
|
(parameter_declaration) @parameter.inner
|
|
.
|
|
","? @_end
|
|
(#make-range! "parameter.outer" @parameter.inner @_end))
|
|
|
|
(parameter_declaration
|
|
name: (identifier)
|
|
type: (_)) @parameter.inner
|
|
|
|
(parameter_declaration
|
|
name: (identifier)
|
|
type: (_)) @parameter.inner
|
|
|
|
(parameter_list
|
|
"," @_start
|
|
.
|
|
(variadic_parameter_declaration) @parameter.inner
|
|
(#make-range! "parameter.outer" @_start @parameter.inner))
|
|
|
|
; arguments
|
|
(argument_list
|
|
"," @_start
|
|
.
|
|
(_) @parameter.inner
|
|
(#make-range! "parameter.outer" @_start @parameter.inner))
|
|
|
|
(argument_list
|
|
.
|
|
(_) @parameter.inner
|
|
.
|
|
","? @_end
|
|
(#make-range! "parameter.outer" @parameter.inner @_end))
|
|
|
|
; assignments
|
|
(short_var_declaration
|
|
left: (_) @assignment.lhs
|
|
right: (_) @assignment.rhs @assignment.inner) @assignment.outer
|
|
|
|
(assignment_statement
|
|
left: (_) @assignment.lhs
|
|
right: (_) @assignment.rhs @assignment.inner) @assignment.outer
|
|
|
|
(var_spec
|
|
name: (_) @assignment.lhs
|
|
value: (_) @assignment.rhs @assignment.inner) @assignment.outer
|
|
|
|
(var_spec
|
|
name: (_) @assignment.inner
|
|
type: (_)) @assignment.outer
|
|
|
|
(const_spec
|
|
name: (_) @assignment.lhs
|
|
value: (_) @assignment.rhs @assignment.inner) @assignment.outer
|
|
|
|
(const_spec
|
|
name: (_) @assignment.inner
|
|
type: (_)) @assignment.outer
|