Subject: bug#78402: treesit after-change-functions

From: Juri Linkov <[email-masked]>
Date: Mon, 19 May 2025 09:38:40 +0300

>> Btw, what’s the issue we’re trying to fix here? If some lisp want to have
>> up-to-date ranges, it can just call treesit--pre-redisplay or
>> treesit-update-ranges. Why do we get the node-outdated error?
>
> Hmm... so what you're saying is that we should do something like the
> patch below?

Maybe Yuan could confirm if `treesit-update-ranges`
is already optimized for frequent calls on overlapping ranges
that don't need updating and where 'beg' and 'end' fall back
to (point-min) and (point-max).

> +  (if backward
> +      (treesit-update-ranges bound (point))
> +    (treesit-update-ranges (point) bound))

This also requires turning markers into integers before:

  (when (markerp bound) (setq bound (marker-position bound)))