Files
beginner-friendly-lang/tree-sitter/queries/topiary.scm

113 lines
2.6 KiB
Scheme

; do not format inside these
[(string_literal)
(char_literal)
(comment)
(doc_comment)
] @leaf
; TODO: word wrapping in comments
(definition) @allow_blank_line_before
(doc_comment_value) @append_hardline
(doc_comment) @prepend_hardline @append_hardline
(comment) @append_hardline
(let_binding
"let" @prepend_spaced_softline @append_space
"=" @prepend_space @append_space ; @append_spaced_softline
value: (_) @prepend_indent_start @append_indent_end
body: (_) @prepend_hardline)
; TODO: report assertion error
;(await_binding
; body: (_) @prepend_hardline)
(def
":" @prepend_space @append_spaced_softline
signature: (_) @prepend_spaced_softline @prepend_indent_start @append_indent_end)
(def
"=" @prepend_space @append_spaced_softline @append_indent_start
value: (_) @append_indent_end)
(def "def" @append_space)
(if_expr
"if" @prepend_space @append_space
"then" @prepend_space @append_spaced_softline
then: (_) @prepend_indent_start @append_indent_end @append_hardline
"else" @prepend_space @append_spaced_softline
else: (_) @prepend_indent_start @append_indent_end)
((match_arm) @append_hardline . (match_arm))
(match_arm
"->" @append_spaced_softline @prepend_indent_start @append_indent_end)
(match_expr
"|" @append_space)
(match_expr
"match" @append_space
"with" @prepend_space @append_hardline
. (match_arm) @prepend_indent_start @append_indent_end)
; add newline between two consecutive definitions
((definition) @append_hardline . (definition))
(list_expression
"," @append_spaced_softline)
(list_expression
"[" @append_empty_softline
"]" @prepend_empty_softline)
(list_expression) @prepend_space @append_space
(atom
"(" @append_empty_softline
")" @prepend_empty_softline)
(extensible_union
"extensible" @append_space
"union" @append_space)
(extend_decl
"extend" @append_space
"with" @prepend_spaced_softline @append_space
tag: (_) @append_space)
(atom
"(" @delete
. (expression (atom))
. ")" @delete)
(full_partial_type_definition
"type" @append_space
"=" @prepend_space @append_spaced_softline)
(type_definition
"[" @prepend_space
"]" @append_space)
(type_definition
"," @append_space)
(type_definition
arg: (_) @append_space)
(type_definition
"type" @append_space
"=" @prepend_space @append_spaced_softline)
(function_call
"," @append_spaced_softline)
(record_expr_field
":" @append_spaced_softline)
(record_expr
"," @append_spaced_softline)
(record_expr
"{" @append_empty_softline
"}" @prepend_empty_softline)
; TODO: unify binary exprs
; TODO: scopes
; TODO: non-atom exprs
; TODO: types
; TODO: disable format regions