79 lines
1.6 KiB
Scheme
79 lines
1.6 KiB
Scheme
![]() |
; Functions
|
||
|
; top level function with type annotation and doc comment
|
||
|
((module_declaration)
|
||
|
(block_comment) @function.outer.start
|
||
|
.
|
||
|
(type_annotation)
|
||
|
.
|
||
|
(value_declaration
|
||
|
body: (_)? @function.inner) @function.outer)
|
||
|
|
||
|
; top level function with type annotation
|
||
|
((module_declaration)
|
||
|
(type_annotation) @function.outer.start
|
||
|
.
|
||
|
(value_declaration
|
||
|
body: (_)? @function.inner) @function.outer)
|
||
|
|
||
|
; top level function without type annotation
|
||
|
((module_declaration)
|
||
|
(value_declaration
|
||
|
body: (_)? @function.inner) @function.outer)
|
||
|
|
||
|
; Comments
|
||
|
[
|
||
|
(block_comment)
|
||
|
(line_comment)
|
||
|
] @comment.outer
|
||
|
|
||
|
; Conditionals
|
||
|
(if_else_expr
|
||
|
exprList: (_)
|
||
|
exprList: (_) @conditional.inner) @conditional.outer
|
||
|
|
||
|
(case_of_expr
|
||
|
branch: (case_of_branch) @conditional.inner) @conditional.outer
|
||
|
|
||
|
; Parameters
|
||
|
; type annotations
|
||
|
((type_expression
|
||
|
(arrow) @_start
|
||
|
.
|
||
|
(type_ref) @parameter.inner)
|
||
|
(#make-range! "parameter.outer" @_start @parameter.inner))
|
||
|
|
||
|
((type_expression
|
||
|
.
|
||
|
(type_ref) @parameter.inner
|
||
|
.
|
||
|
(arrow)? @_end)
|
||
|
(#make-range! "parameter.outer" @parameter.inner @_end))
|
||
|
|
||
|
; list items
|
||
|
((list_expr
|
||
|
"," @_start
|
||
|
.
|
||
|
exprList: (_) @parameter.inner)
|
||
|
(#make-range! "parameter.outer" @_start @parameter.inner))
|
||
|
|
||
|
((list_expr
|
||
|
.
|
||
|
exprList: (_) @parameter.inner
|
||
|
.
|
||
|
","? @_end)
|
||
|
(#make-range! "parameter.outer" @parameter.inner @_end))
|
||
|
|
||
|
; tuple items
|
||
|
((tuple_expr
|
||
|
"," @_start
|
||
|
.
|
||
|
expr: (_) @parameter.inner)
|
||
|
(#make-range! "parameter.outer" @_start @parameter.inner))
|
||
|
|
||
|
((tuple_expr
|
||
|
.
|
||
|
expr: (_) @parameter.inner
|
||
|
.
|
||
|
","? @_end)
|
||
|
(#make-range! "parameter.outer" @parameter.inner @_end))
|