GNU bug report logs -
#65451
30.0.50; `after-change-functions' are not triggered in the same order the changes are made
Previous Next
Reported by: Ihor Radchenko <yantar92 <at> posteo.net>
Date: Tue, 22 Aug 2023 09:31:01 UTC
Severity: normal
Found in version 30.0.50
Done: Stefan Monnier <monnier <at> iro.umontreal.ca>
Bug is archived. No further changes may be made.
Full log
Message #41 received at 65451 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
>> Would it be acceptable to accumulate treesit_record_change transactions
>> into a queue, combine them later, and run the Elisp hook only when it is
>> safe (around the same place `after-change-functions' is called, but only
>> when actual edit is made to the buffer text)?
>>
>> That way, we can have a hook that will run strictly less frequently
>> compared to `after-change-functions'.
>
> When exactly do you need this to run? At the same time as
> after-change-functions doesn't sound like a good idea to me, but I
> think you don't need to run it there. What about running just before
> redisplay kicks in?
Usually, we need to update AST when some other Elisp code needs Org
element API. And we update AST on idle timer to speed things up.
What if we use no hooks at all? Instead, the edit transactions are
accumulated in a list that can be examined and processed by Elisp code
as needed.
Elements of the list will be like
[:buffer-chars-modified-tick :region-beginning :region-end-before-edit :region-end-after-edit]
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
This bug report was last modified 1 year and 104 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.