Org: Use new 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.
This commit is contained in:
parent
1d07a6d7e3
commit
6bcf41c311
2 changed files with 20 additions and 19 deletions
|
@ -292,10 +292,20 @@ older than 27.1"
|
|||
(if tree (push tree elems))
|
||||
(nreverse elems))))
|
||||
|
||||
(if (version< emacs-version "27.1")
|
||||
(defsubst org-replace-buffer-contents (source &optional _max-secs _max-costs)
|
||||
(replace-buffer-contents source))
|
||||
(defalias 'org-replace-buffer-contents #'replace-buffer-contents))
|
||||
(defalias 'org-replace-region-contents
|
||||
(if (> emacs-major-version 30)
|
||||
#'replace-region-contents
|
||||
;; The `replace-region-contents' in Emacs<31 does not accept a buffer
|
||||
;; as SOURCE argument and does not preserve the position well enough.
|
||||
(lambda (beg end source &optional max-secs max-costs)
|
||||
(save-restriction
|
||||
(narrow-to-region beg end)
|
||||
(let ((eobp (eobp)))
|
||||
(with-no-warnings
|
||||
(if (< emacs-major-version 27)
|
||||
(replace-buffer-contents source)
|
||||
(replace-buffer-contents source max-secs max-costs)))
|
||||
(if eobp (goto-char (point-max))))))))
|
||||
|
||||
(unless (fboundp 'proper-list-p)
|
||||
;; `proper-list-p' was added in Emacs 27.1. The function below is
|
||||
|
|
|
@ -1414,13 +1414,9 @@ EVENT is passed to `mouse-set-point'."
|
|||
;; insert new contents.
|
||||
(delete-overlay overlay)
|
||||
(let ((expecting-bol (bolp)))
|
||||
(if (version< emacs-version "27.1")
|
||||
(progn (delete-region beg end)
|
||||
(insert (with-current-buffer write-back-buf (buffer-string))))
|
||||
(save-restriction
|
||||
(narrow-to-region beg end)
|
||||
(org-replace-buffer-contents write-back-buf 0.1 nil)
|
||||
(goto-char (point-max))))
|
||||
(goto-char end)
|
||||
(org-replace-region-contents beg end write-back-buf 0.1 nil)
|
||||
(cl-assert (= (point) (+ beg (buffer-size write-back-buf))))
|
||||
(when (and expecting-bol (not (bolp))) (insert "\n")))
|
||||
(kill-buffer write-back-buf)
|
||||
(save-buffer)
|
||||
|
@ -1461,14 +1457,9 @@ EVENT is passed to `mouse-set-point'."
|
|||
(undo-boundary)
|
||||
(goto-char beg)
|
||||
(let ((expecting-bol (bolp)))
|
||||
(if (version< emacs-version "27.1")
|
||||
(progn (delete-region beg end)
|
||||
(insert (with-current-buffer write-back-buf
|
||||
(buffer-string))))
|
||||
(save-restriction
|
||||
(narrow-to-region beg end)
|
||||
(org-replace-buffer-contents write-back-buf 0.1 nil)
|
||||
(goto-char (point-max))))
|
||||
(goto-char end)
|
||||
(org-replace-region-contents beg end write-back-buf 0.1 nil)
|
||||
(cl-assert (= (point) (+ beg (buffer-size write-back-buf))))
|
||||
(when (and expecting-bol (not (bolp))) (insert "\n")))))
|
||||
(when write-back-buf (kill-buffer write-back-buf))
|
||||
;; If we are to return to source buffer, put point at an
|
||||
|
|
Loading…
Add table
Reference in a new issue