[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#70077: An easier way to track buffer changes
From: |
Eli Zaretskii |
Subject: |
bug#70077: An easier way to track buffer changes |
Date: |
Fri, 29 Mar 2024 21:12:54 +0300 |
> Cc: Nicolas Goaziou <mail@nicolasgoaziou.fr>,
> Ihor Radchenko <yantar92@gmail.com>, Alan Mackenzie <acm@muc.de>,
> João Távora <joaotavora@gmail.com>,
> Alan Zimmerman <alan.zimm@gmail.com>,
> Frédéric Bour <frederic.bour@lakaban.net>,
> Phillip Lord <phillip.lord@russet.org.uk>,
> Stephen Leake <stephen_leake@stephe-leake.org>, Yuan Fu <casouri@gmail.com>,
> Qiantan Hong <qhong@alum.mit.edu>, monnier@iro.umontreal.ca
> Date: Fri, 29 Mar 2024 12:15:53 -0400
> From: Stefan Monnier via "Bug reports for GNU Emacs,
> the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>
> (defun track-changes-register ( signal)
> "Register a new tracker and return a new tracker ID.
> SIGNAL is a function that will be called with no argument when
> the current buffer is modified, so that we can react to the change.
> Once called, SIGNAL is not called again until `track-changes-fetch'
> is called with the corresponding tracker ID."
>
> (defun track-changes-unregister (id)
> "Remove the tracker denoted by ID.
> Trackers can consume resources (especially if `track-changes-fetch' is
> not called), so it is good practice to unregister them when you don't
> need them any more."
>
> (defun track-changes-fetch (id func)
> "Fetch the pending changes.
> ID is the tracker ID returned by a previous `track-changes-register'.
> FUNC is a function. It is called with 3 arguments (BEGIN END BEFORE)
> where BEGIN..END delimit the region that was changed since the last
> time `track-changes-fetch' was called and BEFORE is a string containing
> the previous content of that region.
>
> If no changes occurred since the last time, FUNC is not called and
> we return nil, otherwise we return the value returned by FUNC,
> and re-enable the TRACKER corresponding to ID."
I cannot imagine how applications would use these APIs. I'm probably
missing something, org the above documentation does. Can you show
some real-life examples?
bug#70077: An easier way to track buffer changes, Stefan Monnier, 2024/03/29
bug#70077: An easier way to track buffer changes, phillip . lord, 2024/03/29