alphapapa / emacs-package-dev-handbook

An Emacs package development handbook. Built with Emacs, by Emacs package developers, for Emacs package developers.
GNU General Public License v3.0
1.12k stars 44 forks source link

Add section on using hooks #26

Open justinbarclay opened 3 months ago

justinbarclay commented 3 months ago

As a package dev, I'd like to have a reference section of hooks that are commonly used in packages and how to use them.

In particular, for my use case, I've been looking for a good reference implementation of using the after-change-hooks for building up a set of changes a user has made to the buffer.

IE: If a user replaces a region of text

abcd => efgh

would look something like:

(:before-change "abcd"
 :after-change "efgh")

or if a user deletes a char:

hello world => helloworld

would look like

(:before-change " "
 :after-change "")

I've tried implementing this myself using the after-change-hook, but I keep running edges in my knowledge causing weird bugs.

alphapapa commented 3 months ago

Hi Justin,

That would certainly be helpful. Generally I'd suggest that, if someone were to take the time to write something like that up, it ought to be added to the Elisp manual (or, at least, offered to it first). I'm guessing that the maintainers would welcome improvements to that part of the manual.

Beyond that, I haven't worked with the after/before-change hooks myself, so my role would be that of welcoming contributions in that regard.

FYI, there's a discussion on a bug about an easier API for this sort of thing; you might like to chime in there: https://yhetil.org/emacs-bugs/jwvh6gnvncn.fsf-monnier+emacs@gnu.org/T/#me028b279c2813b1bd6c1cf7ebca00efb60cf60b3