diff options
| author | Stefan Monnier | 2025-03-11 17:10:30 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2025-03-11 17:16:21 -0400 |
| commit | 40d8650d5177bd291747d225c7d2cf2b4ba55856 (patch) | |
| tree | 7da9e14cca832b5471004aa030c054fb652e474d /test/src | |
| parent | e1ceee716d7b0bb611317c455a2a49d4b0485469 (diff) | |
| download | emacs-40d8650d5177bd291747d225c7d2cf2b4ba55856.tar.gz emacs-40d8650d5177bd291747d225c7d2cf2b4ba55856.zip | |
(Freplace_buffer_contents): Preserve markers more carefully
Use `replace_range` rather than `delete+insert`.
* src/insdel.c (replace_range): Allow NEW to specify a chunk
of buffer text.
* src/editfns.c (Freplace_buffer_contents): Use it.
* test/src/editfns-tests.el (replace-buffer-contents-1): Remove
incorrect check which happened to succeed because point was not
preserved carefully enough. Make the replacement text share a bit
more content to make the test a bit more strict.
(editfns-tests--replace-region): Doesn't fail any more.
Diffstat (limited to 'test/src')
| -rw-r--r-- | test/src/editfns-tests.el | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/test/src/editfns-tests.el b/test/src/editfns-tests.el index 09af179a180..c3f825c6149 100644 --- a/test/src/editfns-tests.el +++ b/test/src/editfns-tests.el | |||
| @@ -280,23 +280,25 @@ | |||
| 280 | 280 | ||
| 281 | (ert-deftest replace-buffer-contents-1 () | 281 | (ert-deftest replace-buffer-contents-1 () |
| 282 | (with-temp-buffer | 282 | (with-temp-buffer |
| 283 | (insert #("source" 2 4 (prop 7))) | 283 | (insert #("source " 2 4 (prop 7))) |
| 284 | (let ((source (current-buffer))) | 284 | (let ((source (current-buffer))) |
| 285 | (with-temp-buffer | 285 | (with-temp-buffer |
| 286 | (insert "before dest after") | 286 | (insert "before dest after") |
| 287 | (let ((marker (set-marker (make-marker) 14))) | 287 | (let ((marker (set-marker (make-marker) 14))) |
| 288 | (save-restriction | 288 | (save-restriction |
| 289 | (narrow-to-region 8 12) | 289 | (narrow-to-region 8 13) |
| 290 | (replace-buffer-contents source)) | 290 | (goto-char 12) |
| 291 | (should (looking-at " \\'")) | ||
| 292 | (replace-buffer-contents source) | ||
| 293 | (should (looking-at " \\'"))) | ||
| 291 | (should (equal (marker-buffer marker) (current-buffer))) | 294 | (should (equal (marker-buffer marker) (current-buffer))) |
| 292 | (should (equal (marker-position marker) 16))) | 295 | (should (equal (marker-position marker) 16))) |
| 293 | (should (equal-including-properties | 296 | (should (equal-including-properties |
| 294 | (buffer-string) | 297 | (buffer-string) |
| 295 | #("before source after" 9 11 (prop 7)))) | 298 | #("before source after" 9 11 (prop 7)))))) |
| 296 | (should (equal (point) 9)))) | ||
| 297 | (should (equal-including-properties | 299 | (should (equal-including-properties |
| 298 | (buffer-string) | 300 | (buffer-string) |
| 299 | #("source" 2 4 (prop 7)))))) | 301 | #("source " 2 4 (prop 7)))))) |
| 300 | 302 | ||
| 301 | (ert-deftest replace-buffer-contents-2 () | 303 | (ert-deftest replace-buffer-contents-2 () |
| 302 | (with-temp-buffer | 304 | (with-temp-buffer |
| @@ -332,7 +334,7 @@ | |||
| 332 | (replace-buffer-contents str-buf)))))))) | 334 | (replace-buffer-contents str-buf)))))))) |
| 333 | 335 | ||
| 334 | (ert-deftest editfns-tests--replace-region () | 336 | (ert-deftest editfns-tests--replace-region () |
| 335 | :expected-result :failed | 337 | ;; :expected-result :failed |
| 336 | (with-temp-buffer | 338 | (with-temp-buffer |
| 337 | (insert "here is some text") | 339 | (insert "here is some text") |
| 338 | (let ((m5n (copy-marker (+ (point-min) 5))) | 340 | (let ((m5n (copy-marker (+ (point-min) 5))) |