1 Commits

Author SHA1 Message Date
9482b629c1 c 2025-09-21 22:54:00 +02:00
2 changed files with 65 additions and 18 deletions

View File

@@ -115,7 +115,7 @@ module.exports = grammar({
type_atom: $ => choice( type_atom: $ => choice(
$.just_type, $.just_type,
$.partial_type, $.partial_type,
seq('(', $.type, ')'), seq('(', $.type, ')'),
$.record_type, $.record_type,
), ),

View File

@@ -19,14 +19,14 @@
"=" @prepend_space @append_space "=" @prepend_space @append_space
value: (_) @prepend_indent_start @append_indent_end @prepend_begin_measuring_scope @append_end_measuring_scope value: (_) @prepend_indent_start @append_indent_end @prepend_begin_measuring_scope @append_end_measuring_scope
body: (_) @prepend_hardline body: (_) @prepend_hardline
(#scope_id! "let")) (#scope_id! "def"))
; ; remove `in`
(await_binding ; (let_binding
"await" @prepend_spaced_softline @append_space ; "in" @delete)
"=" @prepend_space @append_space ; add `in`
value: (_) @prepend_indent_start @append_indent_end @prepend_begin_measuring_scope @append_end_measuring_scope (let_binding
body: (_) @prepend_hardline value: (_) @append_delimiter @append_space
(#scope_id! "await")) (#delimiter! " in"))
(def (def
":" @prepend_space @append_spaced_softline ":" @prepend_space @append_spaced_softline
@@ -112,16 +112,22 @@
(function_call (function_call
"," @append_spaced_softline) "," @append_spaced_softline)
; ==== SIMILAR TO record_type ====
(record_expr_field (record_expr_field
":" @append_spaced_softline) ":" @append_spaced_softline)
(record_expr (record_expr
"," @append_spaced_softline) "," @append_spaced_softline)
(record_expr (record_expr
"{" @append_empty_softline "{" @append_empty_softline @append_begin_measuring_scope @append_indent_start
"}" @prepend_empty_softline) "}" @prepend_empty_softline ; TODO: make this one configurable; also see lists and others
@append_end_measuring_scope @prepend_indent_end
(#scope_id! "record_expr"))
; remove trailing comma ; remove trailing comma
(record_expr (record_expr
"," @delete . "}") "," @delete . "}")
; ====^^^^^^^^^^^^========
(atom (atom
"(" @append_begin_measuring_scope @append_empty_softline @append_indent_start "(" @append_begin_measuring_scope @append_empty_softline @append_indent_start
@@ -140,12 +146,6 @@
"->" @prepend_space @append_spaced_softline "->" @prepend_space @append_spaced_softline
body: (_) @prepend_indent_start @append_indent_end) body: (_) @prepend_indent_start @append_indent_end)
(type_atom
"(" @append_begin_measuring_scope @append_empty_softline @append_indent_start
")" @append_end_measuring_scope @prepend_empty_softline @append_indent_end
(#scope_id! "paren_type"))
(tag_expr (tag_expr
tag: (_) @append_space) tag: (_) @append_space)
@@ -153,7 +153,54 @@
left: (_) @append_spaced_softline left: (_) @append_spaced_softline
right: (_) @prepend_space) right: (_) @prepend_space)
; TODO: types
(type_atom
"(" @append_begin_measuring_scope @append_empty_softline @append_indent_start
")" @append_end_measuring_scope @prepend_empty_softline @append_indent_end
(#scope_id! "paren_type"))
(fn_type
"->" @prepend_space @append_spaced_softline)
; ==== SIMILAR TO record_expr ====
(record_type_field
":" @append_spaced_softline)
(record_type
"," @append_spaced_softline)
(record_type
"{" @append_empty_softline @append_begin_measuring_scope @append_indent_start
"}" @prepend_empty_softline ; TODO: make this one configurable; also see lists and others
@append_end_measuring_scope @prepend_indent_end
(#scope_id! "record_type"))
; remove trailing comma
(record_type
"," @delete . "}")
; ====^^^^^^^^^^^^========
; 'Tag Unit -> 'Tag
(tagged_type
type: (type_atom (just_type (path
(identifier) @delete
(#eq? @delete "Unit")))))
(tagged_type
type: (_) @prepend_space)
(type_atom
"(" @delete
. (type (type_atom))
. ")" @delete)
; TODO:
; $.union_type,
; $.partial_union_type,
; $.parametrized_type,
; $.with_type,
; $.recursive_type,
; TODO: disable-format-regions ; TODO: disable-format-regions
; TODO: folding query ; TODO: folding query
; TODO: wrap confusing expressions (in terms of precedence) in parens ; TODO: wrap confusing expressions (in terms of precedence) in parens