|
From: | Dmitry Gutov |
Subject: | Re: Tree-sitter navigation time grows as sqrt(line-number) |
Date: | Sun, 20 Aug 2023 23:26:36 +0300 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 |
On 20/08/2023 15:40, JD Smith wrote:
Looks like a winner (see below, or the gist)! Thanks all.
Same here, thanks all indeed.
I do think we should consider a treesit-node-ancestors function that collects all the parent (of parent) nodes in one go into an (emacs) list, since you basically have to descend the whole tree from root to find the 1st parent anyway. Then people who want to know, e.g., “am I in an if block?” can just test node type down the full ancestor list. Of course, also, node-parent-until/while could be re-written to use node-ancestors, for some additional efficiency.
Should be useful, but the speedup from traversing only once might be negated by the work of allocating the full list of Lisp objects. So it might improve only certain applications.
OTOH, node-parent-until/while could be rewritten in a way that only allocates Lisp on-demand.
[Prev in Thread] | Current Thread | [Next in Thread] |