aboutsummaryrefslogtreecommitdiffstats
path: root/test/src/buffer-tests.el
diff options
context:
space:
mode:
authorStefan Monnier2022-11-03 22:44:55 -0400
committerStefan Monnier2022-11-03 22:44:55 -0400
commitff679e16f8bf8a9876fc1a980c372d4e55f3745d (patch)
tree187712c5c9957fde923430d14ec6fd59f5441be4 /test/src/buffer-tests.el
parent7d47651d0168c863ad9e9b07921a42dc18029276 (diff)
downloademacs-ff679e16f8bf8a9876fc1a980c372d4e55f3745d.tar.gz
emacs-ff679e16f8bf8a9876fc1a980c372d4e55f3745d.zip
itree: Reproduce markers's behavior more faithfully (bug#58928)
The most obvious problem was the lack of support for `insert-before-markers`, but the behavior was also different in a few other cases. * src/itree.h (itree_insert_gap): * src/itree.c (itree_insert_gap): Add `before_markers` arg. * src/lisp.h (adjust_overlays_for_insert): * src/buffer.c (adjust_overlays_for_insert): Add `before_markers` arg. * src/insdel.c (adjust_markers_for_replace, adjust_markers_for_insert) (adjust_markers_for_delete): Adjust overlays directly from here. (insert_1_both, insert_from_string_1, insert_from_gap) (insert_from_buffer_1, adjust_after_replace, replace_range) (replace_range_2, del_range_2): Don't adjust overlays explicitly here any more. * test/src/buffer-tests.el (test-overlay-insert-before-markers-empty) (test-overlay-insert-before-markers-non-empty): New tests.
Diffstat (limited to 'test/src/buffer-tests.el')
-rw-r--r--test/src/buffer-tests.el22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/src/buffer-tests.el b/test/src/buffer-tests.el
index b96a8dcacd2..a39d7d51de1 100644
--- a/test/src/buffer-tests.el
+++ b/test/src/buffer-tests.el
@@ -528,6 +528,28 @@ with parameters from the *Messages* buffer modification."
528(deftest-overlay-start/end-1 L (1 0) (1 1)) 528(deftest-overlay-start/end-1 L (1 0) (1 1))
529(deftest-overlay-start/end-1 M (0 0) (1 1)) 529(deftest-overlay-start/end-1 M (0 0) (1 1))
530 530
531(ert-deftest test-overlay-insert-before-markers-empty ()
532 (with-temp-buffer
533 (insert "1234")
534 (goto-char (1+ (point-min)))
535 (let ((overlay (make-overlay (point) (point))))
536 (insert-before-markers "x")
537 (should (equal (point) (overlay-end overlay)))
538 (should (equal (point) (overlay-start overlay))))))
539
540(ert-deftest test-overlay-insert-before-markers-non-empty ()
541 (with-temp-buffer
542 (insert "1234")
543 (goto-char (+ 2 (point)))
544 (let ((overlay (make-overlay (1- (point)) (point))))
545 (insert-before-markers "x")
546 (should (equal (point) (overlay-end overlay)))
547 (should (equal (- (point) 2) (overlay-start overlay)))
548 (forward-char -2)
549 (insert-before-markers "y")
550 (should (equal (+ 2 (point)) (overlay-end overlay)))
551 (should (equal (point) (overlay-start overlay))))))
552
531(ert-deftest test-overlay-start/end-2 () 553(ert-deftest test-overlay-start/end-2 ()
532 (should-not (overlay-start (with-temp-buffer (make-overlay 1 1)))) 554 (should-not (overlay-start (with-temp-buffer (make-overlay 1 1))))
533 (should-not (overlay-end (with-temp-buffer (make-overlay 1 1))))) 555 (should-not (overlay-end (with-temp-buffer (make-overlay 1 1)))))