diff options
| author | Stefan Monnier | 2022-11-03 22:44:55 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2022-11-03 22:44:55 -0400 |
| commit | ff679e16f8bf8a9876fc1a980c372d4e55f3745d (patch) | |
| tree | 187712c5c9957fde923430d14ec6fd59f5441be4 /test/src/buffer-tests.el | |
| parent | 7d47651d0168c863ad9e9b07921a42dc18029276 (diff) | |
| download | emacs-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.el | 22 |
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))))) |