aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2025-03-28 00:49:33 -0400
committerStefan Monnier2025-03-29 17:49:49 -0400
commit6bcf41c311b220e84f4eb423700f36ac1ddfffa7 (patch)
tree02691864aa0b9137f1f9af569bf70bcf1ac98515
parent1d07a6d7e34677be1653b1d4d464ff00cabfa102 (diff)
downloademacs-scratch/replace-region-contents.tar.gz
emacs-scratch/replace-region-contents.zip
Org: Use new `replace-region-contents`scratch/replace-region-contents
* lisp/org/org-compat.el (org-replace-buffer-contents): Delete function. (org-replace-region-contents): New function. * lisp/org/org-src.el (org-edit-src-save, org-edit-src-exit): Use it.
-rw-r--r--lisp/org/org-compat.el18
-rw-r--r--lisp/org/org-src.el21
2 files changed, 20 insertions, 19 deletions
diff --git a/lisp/org/org-compat.el b/lisp/org/org-compat.el
index 59d34b661c6..297e8f06045 100644
--- a/lisp/org/org-compat.el
+++ b/lisp/org/org-compat.el
@@ -292,10 +292,20 @@ older than 27.1"
292 (if tree (push tree elems)) 292 (if tree (push tree elems))
293 (nreverse elems)))) 293 (nreverse elems))))
294 294
295(if (version< emacs-version "27.1") 295(defalias 'org-replace-region-contents
296 (defsubst org-replace-buffer-contents (source &optional _max-secs _max-costs) 296 (if (> emacs-major-version 30)
297 (replace-buffer-contents source)) 297 #'replace-region-contents
298 (defalias 'org-replace-buffer-contents #'replace-buffer-contents)) 298 ;; The `replace-region-contents' in Emacs<31 does not accept a buffer
299 ;; as SOURCE argument and does not preserve the position well enough.
300 (lambda (beg end source &optional max-secs max-costs)
301 (save-restriction
302 (narrow-to-region beg end)
303 (let ((eobp (eobp)))
304 (with-no-warnings
305 (if (< emacs-major-version 27)
306 (replace-buffer-contents source)
307 (replace-buffer-contents source max-secs max-costs)))
308 (if eobp (goto-char (point-max))))))))
299 309
300(unless (fboundp 'proper-list-p) 310(unless (fboundp 'proper-list-p)
301 ;; `proper-list-p' was added in Emacs 27.1. The function below is 311 ;; `proper-list-p' was added in Emacs 27.1. The function below is
diff --git a/lisp/org/org-src.el b/lisp/org/org-src.el
index 302c27ac866..d8a928b1f9f 100644
--- a/lisp/org/org-src.el
+++ b/lisp/org/org-src.el
@@ -1414,13 +1414,9 @@ EVENT is passed to `mouse-set-point'."
1414 ;; insert new contents. 1414 ;; insert new contents.
1415 (delete-overlay overlay) 1415 (delete-overlay overlay)
1416 (let ((expecting-bol (bolp))) 1416 (let ((expecting-bol (bolp)))
1417 (if (version< emacs-version "27.1") 1417 (goto-char end)
1418 (progn (delete-region beg end) 1418 (org-replace-region-contents beg end write-back-buf 0.1 nil)
1419 (insert (with-current-buffer write-back-buf (buffer-string)))) 1419 (cl-assert (= (point) (+ beg (buffer-size write-back-buf))))
1420 (save-restriction
1421 (narrow-to-region beg end)
1422 (org-replace-buffer-contents write-back-buf 0.1 nil)
1423 (goto-char (point-max))))
1424 (when (and expecting-bol (not (bolp))) (insert "\n"))) 1420 (when (and expecting-bol (not (bolp))) (insert "\n")))
1425 (kill-buffer write-back-buf) 1421 (kill-buffer write-back-buf)
1426 (save-buffer) 1422 (save-buffer)
@@ -1461,14 +1457,9 @@ EVENT is passed to `mouse-set-point'."
1461 (undo-boundary) 1457 (undo-boundary)
1462 (goto-char beg) 1458 (goto-char beg)
1463 (let ((expecting-bol (bolp))) 1459 (let ((expecting-bol (bolp)))
1464 (if (version< emacs-version "27.1") 1460 (goto-char end)
1465 (progn (delete-region beg end) 1461 (org-replace-region-contents beg end write-back-buf 0.1 nil)
1466 (insert (with-current-buffer write-back-buf 1462 (cl-assert (= (point) (+ beg (buffer-size write-back-buf))))
1467 (buffer-string))))
1468 (save-restriction
1469 (narrow-to-region beg end)
1470 (org-replace-buffer-contents write-back-buf 0.1 nil)
1471 (goto-char (point-max))))
1472 (when (and expecting-bol (not (bolp))) (insert "\n"))))) 1463 (when (and expecting-bol (not (bolp))) (insert "\n")))))
1473 (when write-back-buf (kill-buffer write-back-buf)) 1464 (when write-back-buf (kill-buffer write-back-buf))
1474 ;; If we are to return to source buffer, put point at an 1465 ;; If we are to return to source buffer, put point at an