diff options
| author | Stefan Monnier | 2025-03-28 00:49:33 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2025-03-29 17:49:49 -0400 |
| commit | 6bcf41c311b220e84f4eb423700f36ac1ddfffa7 (patch) | |
| tree | 02691864aa0b9137f1f9af569bf70bcf1ac98515 | |
| parent | 1d07a6d7e34677be1653b1d4d464ff00cabfa102 (diff) | |
| download | emacs-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.el | 18 | ||||
| -rw-r--r-- | lisp/org/org-src.el | 21 |
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 |