155 lines
2.7 KiB
Scheme
155 lines
2.7 KiB
Scheme
; class
|
|
(((annotation)? @class.outer.start
|
|
.
|
|
(class_definition
|
|
body: (class_body) @_end @class.inner) @_start)
|
|
(#make-range! "class.outer" @_start @_end))
|
|
|
|
(mixin_declaration
|
|
(class_body) @class.inner) @class.outer
|
|
|
|
(enum_declaration
|
|
body: (enum_body) @class.inner) @class.outer
|
|
|
|
(extension_declaration
|
|
body: (extension_body) @class.inner) @class.outer
|
|
|
|
; function/method
|
|
(((annotation)? @function.outer.start
|
|
.
|
|
[
|
|
(method_signature)
|
|
(function_signature)
|
|
] @_start
|
|
.
|
|
(function_body) @_end)
|
|
(#make-range! "function.outer" @_start @_end))
|
|
|
|
(function_body
|
|
(block
|
|
.
|
|
"{"
|
|
.
|
|
(_) @_start @_end
|
|
(_)? @_end
|
|
.
|
|
"}"
|
|
(#make-range! "function.inner" @_start @_end)))
|
|
|
|
(type_alias
|
|
(function_type)? @function.inner) @function.outer
|
|
|
|
; parameter
|
|
[
|
|
(formal_parameter)
|
|
(normal_parameter_type)
|
|
(type_parameter)
|
|
] @parameter.inner
|
|
|
|
("," @_start
|
|
.
|
|
[
|
|
(formal_parameter)
|
|
(normal_parameter_type)
|
|
(type_parameter)
|
|
] @_par
|
|
(#make-range! "parameter.outer" @_start @_par))
|
|
|
|
([
|
|
(formal_parameter)
|
|
(normal_parameter_type)
|
|
(type_parameter)
|
|
] @_par
|
|
.
|
|
"," @_end
|
|
(#make-range! "parameter.outer" @_par @_end))
|
|
|
|
; TODO: (_)* not supported yet -> for now this works correctly only with simple arguments
|
|
((arguments
|
|
.
|
|
(_) @parameter.inner
|
|
.
|
|
","? @_end)
|
|
(#make-range! "parameter.outer" @parameter.inner @_end))
|
|
|
|
((arguments
|
|
"," @_start
|
|
.
|
|
(_) @parameter.inner)
|
|
(#make-range! "parameter.outer" @_start @parameter.inner))
|
|
|
|
; call
|
|
((identifier) @_start
|
|
.
|
|
(selector
|
|
(argument_part) @_end)
|
|
(#make-range! "call.outer" @_start @_end))
|
|
|
|
((identifier)
|
|
.
|
|
(selector
|
|
(argument_part
|
|
(arguments
|
|
.
|
|
"("
|
|
.
|
|
(_) @_start
|
|
(_)? @_end
|
|
.
|
|
")"
|
|
(#make-range! "call.inner" @_start @_end)))))
|
|
|
|
; block
|
|
(block) @block.outer
|
|
|
|
; conditional
|
|
(if_statement
|
|
[
|
|
condition: (_)
|
|
consequence: (_)
|
|
alternative: (_)?
|
|
] @conditional.inner) @conditional.outer
|
|
|
|
(switch_statement
|
|
body: (switch_block) @conditional.inner) @conditional.outer
|
|
|
|
(conditional_expression
|
|
[
|
|
consequence: (_)
|
|
alternative: (_)
|
|
] @conditional.inner) @conditional.outer
|
|
|
|
; loop
|
|
(for_statement
|
|
body: (block) @loop.inner) @loop.outer
|
|
|
|
(while_statement
|
|
body: (block) @loop.inner) @loop.outer
|
|
|
|
(do_statement
|
|
body: (block) @loop.inner) @loop.outer
|
|
|
|
; comment
|
|
[
|
|
(comment)
|
|
(documentation_comment)
|
|
] @comment.outer
|
|
|
|
; statement
|
|
[
|
|
(break_statement)
|
|
(do_statement)
|
|
(expression_statement)
|
|
(for_statement)
|
|
(if_statement)
|
|
(return_statement)
|
|
(switch_statement)
|
|
(while_statement)
|
|
(assert_statement)
|
|
;(labeled_statement)
|
|
(yield_statement)
|
|
(yield_each_statement)
|
|
(continue_statement)
|
|
(try_statement)
|
|
] @statement.outer
|