emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Tree-sitter navigation time grows as sqrt(line-number)


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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]