]> git.eshelyaron.com Git - emacs.git/commitdiff
(report_overlay_modification): Fix bug#65929
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 13 Sep 2023 22:49:55 +0000 (18:49 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 13 Sep 2023 22:49:55 +0000 (18:49 -0400)
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.

src/buffer.c
test/src/buffer-tests.el

index 252231357bcf8bac4828172ff09fdde449c4c193..db362ffe7b0fce158635bcf99ce431df8fe35945 100644 (file)
@@ -4091,7 +4091,7 @@ report_overlay_modification (Lisp_Object start, Lisp_Object end, bool after,
            }
          /* 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))
index 45914b2b6b0bbaa341bc5f07cff61cf7ec63a382..aa30533c6a057694ccd1df49b49ce74819831627 100644 (file)
@@ -142,6 +142,7 @@ properties."
                 (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)))))