diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2022-11-01 21:38:55 -0400 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2022-11-01 21:39:12 -0400 |
commit | 8a5678906fa1b899c4d111e5ee4334b278f50d48 (patch) | |
tree | 37a1266d9a21cdccb9dcf220e680c23f2576c7f2 /test/src/buffer-tests.el | |
parent | 835295381bdee3d517c7ee243a22640c78783a9f (diff) | |
download | emacs-8a5678906fa1b899c4d111e5ee4334b278f50d48.tar.gz emacs-8a5678906fa1b899c4d111e5ee4334b278f50d48.tar.bz2 emacs-8a5678906fa1b899c4d111e5ee4334b278f50d48.zip |
src/buffer.c: Fix interaction between overlays & indirect buffers (bug#58928)
* src/buffer.c (adjust_overlays_for_insert)
(adjust_overlays_for_delete): Repeat for all buffers sharing the same text.
* src/itree.c (itree_insert_gap, itree_delete_gap): Allow an empty tree.
* test/src/buffer-tests.el (buffer-tests--overlays-indirect-bug58928):
New test.
Diffstat (limited to 'test/src/buffer-tests.el')
-rw-r--r-- | test/src/buffer-tests.el | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/test/src/buffer-tests.el b/test/src/buffer-tests.el index e0207325241..b96a8dcacd2 100644 --- a/test/src/buffer-tests.el +++ b/test/src/buffer-tests.el @@ -275,6 +275,27 @@ with parameters from the *Messages* buffer modification." (with-temp-buffer (should (eq (buffer-base-buffer (current-buffer)) nil)))) +(ert-deftest buffer-tests--overlays-indirect-bug58928 () + (with-temp-buffer + (insert "hello world") + (let* ((base (current-buffer)) + (ol1 (make-overlay (+ 2 (point-min)) (+ 8 (point-min)))) + (ib (make-indirect-buffer + base (generate-new-buffer-name "bug58928"))) + (ol2 (with-current-buffer ib + (make-overlay (+ 2 (point-min)) (+ 8 (point-min)))))) + (should (equal (overlay-start ol1) (overlay-start ol2))) + (should (equal (overlay-end ol1) (overlay-end ol2))) + (goto-char (+ 3 (point-min))) + (insert "a") (delete-char 2) + (should (equal (overlay-start ol1) (overlay-start ol2))) + (should (equal (overlay-end ol1) (overlay-end ol2))) + (with-current-buffer ib + (goto-char (+ 4 (point-min))) + (insert "a") (delete-char 2)) + (should (equal (overlay-start ol1) (overlay-start ol2))) + (should (equal (overlay-end ol1) (overlay-end ol2)))))) + (ert-deftest overlay-evaporation-after-killed-buffer () (let* ((ols (with-temp-buffer (insert "toto") |