feat(formatter): support formatting missing nodes

This commit makes missing nodes take formatting identical to that of
regular named nodes, with the only exception being that a newline will
not be prepended to a node name. E.g. this pattern:

```query
(MISSING identifier)
```

will *not* be changed to:

```query
(MISSING
  (identifier))
```
This commit is contained in:
Riley Bruins 2025-02-02 09:07:38 -08:00 committed by Christian Clason
parent 7194ff9511
commit 53a6b3993f

View file

@ -90,6 +90,7 @@ local format_queries = [[
(grouping) (grouping)
(named_node) (named_node)
(anonymous_node) (anonymous_node)
(missing_node)
(field_definition) (field_definition)
] @format.prepend-newline) ] @format.prepend-newline)
@ -101,6 +102,7 @@ local format_queries = [[
(grouping) (grouping)
(named_node) (named_node)
(anonymous_node) (anonymous_node)
(missing_node)
(field_definition) (field_definition)
(comment) (comment)
] @format.cancel-prepend ] @format.cancel-prepend
@ -156,6 +158,7 @@ local format_queries = [[
(named_node) ; (foo (bar)) (named_node) ; (foo (bar))
(predicate) ; (named_node (#set!)) (predicate) ; (named_node (#set!))
(anonymous_node) (anonymous_node)
(missing_node)
"." "."
]) ])
;; Honoring comment's position within a node ;; Honoring comment's position within a node
@ -188,6 +191,7 @@ local format_queries = [[
(named_node) (named_node)
(predicate) (predicate)
(anonymous_node) (anonymous_node)
(missing_node)
"." "."
] @format.append-newline) ] @format.append-newline)
@ -213,6 +217,7 @@ local format_queries = [[
(named_node) ; ((foo)) (named_node) ; ((foo))
(list) ; ([foo] (...)) (list) ; ([foo] (...))
(anonymous_node) ; ("foo") (anonymous_node) ; ("foo")
(missing_node)
(grouping . (_)) (grouping . (_))
] @format.indent.begin ] @format.indent.begin
. .
@ -226,6 +231,7 @@ local format_queries = [[
"(" "("
[ [
(anonymous_node) (anonymous_node)
(missing_node)
(named_node) (named_node)
(list) (list)
(predicate) (predicate)
@ -240,6 +246,8 @@ local format_queries = [[
(#not-kind-eq? @format.cancel-append "comment")) (#not-kind-eq? @format.cancel-append "comment"))
(grouping (grouping
(capture) @format.prepend-space) (capture) @format.prepend-space)
(missing_node
name: (_) @format.prepend-space)
;; Remove unnecessary parens ;; Remove unnecessary parens
(grouping (grouping
"(" @format.remove "(" @format.remove
@ -254,6 +262,8 @@ local format_queries = [[
(grouping) (grouping)
(anonymous_node (anonymous_node
name: (string) .) name: (string) .)
(missing_node
name: (_) .)
(named_node (named_node
[ [
"_" "_"
@ -300,6 +310,7 @@ local format_queries = [[
(grouping) (grouping)
(named_node) (named_node)
(anonymous_node) (anonymous_node)
(missing_node)
(negated_field) (negated_field)
] @format.cancel-append ] @format.cancel-append
. .