Somehow the new overlay code in Emacs-29 changed slightly
the test to decide when to run the `modification-hooks` of overlays,
with the consequence that these hook functions end up being executed
also when text is deleted right after an empty overlay, which is
contrary to Emacs-28 behavior as well as contrary to the Texinfo doc.
* src/buffer.c (report_overlay_modification): Better reproduce the
Emacs-28 code.
* test/src/buffer-tests.el (overlay-modification-hooks):
Add corresponding test.
}
/* Test for intersecting intervals. This does the right thing
for both insertion and deletion. */
- if (! insertion || (end_arg > obegin && begin_arg < oend))
+ if (end_arg > obegin && begin_arg < oend)
{
Lisp_Object prop = Foverlay_get (overlay, Qmodification_hooks);
if (!NILP (prop))
(expected-calls . ((modification-hooks (nil 3 4))
(modification-hooks (t 3 4 1)))))
((replace . "4"))
+ ((replace . "4") (overlay-beg . 4)) ;bug#65929
((replace . "12")
(expected-calls . ((modification-hooks (nil 1 3))
(modification-hooks (t 1 2 2)))))