From 95624267db4231dbf55fa1f4ddd990c1c82bbd5d Mon Sep 17 00:00:00 2001 From: Alexander Nutz Date: Sun, 21 Sep 2025 22:28:03 +0200 Subject: [PATCH] c --- tree-sitter/queries/highlights.scm | 1 + tree-sitter/queries/topiary.scm | 41 +++++++++++++++++------------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/tree-sitter/queries/highlights.scm b/tree-sitter/queries/highlights.scm index 932780c..5195c94 100644 --- a/tree-sitter/queries/highlights.scm +++ b/tree-sitter/queries/highlights.scm @@ -54,4 +54,5 @@ "in" "match" "and" + "or" ] @keyword diff --git a/tree-sitter/queries/topiary.scm b/tree-sitter/queries/topiary.scm index bc432bb..c32febf 100644 --- a/tree-sitter/queries/topiary.scm +++ b/tree-sitter/queries/topiary.scm @@ -5,7 +5,7 @@ (doc_comment) ] @leaf -; TODO: word wrapping in comments +; TODO: light asciidoc formatting (definition) @allow_blank_line_before @@ -16,29 +16,26 @@ (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: (await_binding) + "=" @prepend_space @append_space + value: (_) @prepend_indent_start @append_indent_end @prepend_begin_measuring_scope @append_end_measuring_scope + body: (_) @prepend_hardline + (#scope_id! "def")) (def ":" @prepend_space @append_spaced_softline signature: (_) @prepend_spaced_softline @prepend_indent_start @append_indent_end) - (def "=" @prepend_space @append_spaced_softline - value: (_) @prepend_indent_start @prepend_begin_scope - @append_indent_end @append_end_scope + value: (_) @prepend_indent_start @prepend_begin_measuring_scope + @append_indent_end @append_end_measuring_scope (#scope_id! "def")) - (def "def" @append_space) (if_expr - then: (_) @prepend_begin_scope @append_end_scope + then: (_) @prepend_begin_measuring_scope @append_end_measuring_scope (#scope_id! "if_expr.then")) (if_expr - else: (_) @prepend_begin_scope @append_end_scope + else: (_) @prepend_begin_measuring_scope @append_end_measuring_scope (#scope_id! "if_expr.else")) (if_expr "if" @prepend_space @append_space @@ -68,10 +65,14 @@ "," @append_spaced_softline) (list_expression - "[" @append_begin_scope @append_empty_softline @append_indent_start - "]" @append_end_scope @prepend_empty_softline @append_indent_end + "[" @append_begin_measuring_scope @append_empty_softline @append_indent_start + "]" @append_end_measuring_scope @prepend_empty_softline @append_indent_end (#scope_id! "list_expr")) +; remove trailing comma +(list_expression + "," @delete . "]") + (extensible_union "extensible" @append_space "union" @append_space) @@ -111,10 +112,13 @@ (record_expr "{" @append_empty_softline "}" @prepend_empty_softline) +; remove trailing comma +(record_expr + "," @delete . "}") (atom - "(" @append_begin_scope @append_empty_softline @append_indent_start - ")" @append_end_scope @prepend_empty_softline @append_indent_end + "(" @append_begin_measuring_scope @append_empty_softline @append_indent_start + ")" @append_end_measuring_scope @prepend_empty_softline @append_indent_end (#scope_id! "paren_expr")) (await_expr @@ -131,8 +135,8 @@ (type_atom - "(" @append_begin_scope @append_empty_softline @append_indent_start - ")" @append_end_scope @prepend_empty_softline @append_indent_end + "(" @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 @@ -145,3 +149,4 @@ ; TODO: types ; TODO: disable-format-regions ; TODO: folding query +; TODO: wrap confusing expressions (in terms of precedence) in parens