feat(emacs-pkgs/treecrumbs): support "JSON-style" YAML syntax

Makes crumbs work correctly for weird stuff like:

```yaml
foo:
  - { "bar": [ { baz: 1 }]}
```

Would be nice to have tests for this at some point.

Change-Id: I034e83318435404ef8613e439313dbb08865f228
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11105
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
This commit is contained in:
Vincent Ambo 2024-03-09 01:35:39 +03:00 committed by clbot
parent 13cced5b84
commit eeca6cd891

View file

@ -36,13 +36,7 @@
(require 'treesit) (require 'treesit)
(defvar treecrumbs-languages (defvar treecrumbs-languages nil
`(;; In YAML documents, crumbs are generated from the keys of maps,
;; and from elements of arrays.
(yaml . (("block_mapping_pair" .
,(treesit-query-compile 'yaml '((block_mapping_pair key: (_) @key))))
("block_sequence_item" . "[]"))))
"Describes the tree-sitter language grammars supported by "Describes the tree-sitter language grammars supported by
treecrumbs, and how the breadcrumbs for their node types are treecrumbs, and how the breadcrumbs for their node types are
generated. generated.
@ -65,6 +59,17 @@ Treecrumbs will only consider node types that are mentioned in
the node type list. All other nodes are ignored when constructing the node type list. All other nodes are ignored when constructing
the crumbs.") the crumbs.")
(setq treecrumbs-languages
`(;; In YAML documents, crumbs are generated from the keys of maps,
;; and from elements of arrays.
(yaml . (("block_mapping_pair" .
,(treesit-query-compile 'yaml '((block_mapping_pair key: (_) @key))))
("block_sequence" . "[]")
("flow_pair" .
;; TODO: Why can this query not match on to (flow_pair)?
,(treesit-query-compile 'yaml '((_) key: (_) @key)))
("flow_sequence" . "[]")))))
(defvar-local treecrumbs--current-crumbs nil (defvar-local treecrumbs--current-crumbs nil
"Current crumbs to display in the header line. Only updated when "Current crumbs to display in the header line. Only updated when
the node under point changes.") the node under point changes.")