|
From: | Juri Linkov |
Subject: | bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode |
Date: | Tue, 24 Dec 2024 19:52:53 +0200 |
User-agent: | Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu) |
> I’ll go with the (and named “unless”) route because after thinking > about it more, “(unless)” will be hard to work with because the string > predicate is actually a regexp. Is it possible to mark all node names specified in treesit-thing-settings as named? I just discovered a new problem: 1. With typescript-ts-mode on the following snippet: type NodeInfo = | (BaseNode & { subtypes: BaseNode[]; }) | (BaseNode & { fields: { [name: string]: ChildNode }; children: ChildNode[]; }); You can move point inside "string" and type C-M-f or C-M-b. But point doesn't move. This is because treesit-thing-settings defines a named node "string". But anonymous node has the same name "string": (index_signature [ name: (identifier) : index_type: (predefined_type string) and (treesit-node-at (point)) returns #<treesit-node "string" in 111-117> This mismatched "string" in TypeScript is even more unexpected than "unless" in Ruby. So probably we need a way to mark all used nodes as named to avoid such unexpected matches. Maybe matching anonymous nodes should be opt-in, and by default match only named nodes.
[Prev in Thread] | Current Thread | [Next in Thread] |