Replace uses of replace-buffer-contents

* lisp/vc/vc.el (vc-diff-restore-buffer):
* lisp/progmodes/python.el (python--do-isort):
* lisp/progmodes/eglot.el (eglot--apply-text-edits):
* lisp/files.el (revert-buffer-insert-file-contents-delicately):
* lisp/json.el (json-pretty-print): Use `replace-region-contents`.
This commit is contained in:
Stefan Monnier 2025-03-28 00:48:28 -04:00
parent 57da44fa70
commit 468c2aebae
5 changed files with 31 additions and 29 deletions

View file

@ -7264,9 +7264,9 @@ an auto-save file."
The command tries to preserve markers, properties and overlays. The command tries to preserve markers, properties and overlays.
If the operation takes more than this time, a single If the operation takes more than this time, a single
delete+insert is performed. Actually, this value is passed as delete+insert is performed. Actually, this value is passed as
the MAX-SECS argument to the function `replace-buffer-contents', the MAX-SECS argument to the function `replace-region-contents',
so it is not ensured that the whole execution won't take longer. so it is not ensured that the whole execution won't take longer.
See `replace-buffer-contents' for more details.") See `replace-region-contents' for more details.")
(defun revert-buffer-insert-file-contents-delicately (file-name _auto-save-p) (defun revert-buffer-insert-file-contents-delicately (file-name _auto-save-p)
"Optional function for `revert-buffer-insert-file-contents-function'. "Optional function for `revert-buffer-insert-file-contents-function'.
@ -7275,11 +7275,11 @@ The function `revert-buffer-with-fine-grain' uses this function by binding
As with `revert-buffer-insert-file-contents--default-function', FILE-NAME is As with `revert-buffer-insert-file-contents--default-function', FILE-NAME is
the name of the file and AUTO-SAVE-P is non-nil if this is an auto-save file. the name of the file and AUTO-SAVE-P is non-nil if this is an auto-save file.
Since calling `replace-buffer-contents' can take a long time, depending of Since calling `replace-region-contents' can take a long time, depending of
the number of changes made to the buffer, it uses the value of the variable the number of changes made to the buffer, it uses the value of the variable
`revert-buffer-with-fine-grain-max-seconds' as a maximum time to try delicately `revert-buffer-with-fine-grain-max-seconds' as a maximum time to try delicately
reverting the buffer. If it fails, it does a delete+insert. For more details, reverting the buffer. If it fails, it does a delete+insert. For more details,
see `replace-buffer-contents'." see `replace-region-contents'."
(cond (cond
((not (file-exists-p file-name)) ((not (file-exists-p file-name))
(error (if buffer-file-number (error (if buffer-file-number
@ -7302,7 +7302,8 @@ see `replace-buffer-contents'."
(let ((temp-buf (current-buffer))) (let ((temp-buf (current-buffer)))
(set-buffer buf) (set-buffer buf)
(let ((buffer-file-name nil)) (let ((buffer-file-name nil))
(replace-buffer-contents (replace-region-contents
(point-min) (point-max)
temp-buf temp-buf
revert-buffer-with-fine-grain-max-seconds)))))))) revert-buffer-with-fine-grain-max-seconds))))))))
;; See comments in revert-buffer-with-fine-grain for an explanation. ;; See comments in revert-buffer-with-fine-grain for an explanation.

View file

@ -803,7 +803,7 @@ With prefix argument MINIMIZE, minimize it instead."
(orig-buf (current-buffer))) (orig-buf (current-buffer)))
;; Strategy: Repeatedly `json-read' from the original buffer and ;; Strategy: Repeatedly `json-read' from the original buffer and
;; write the pretty-printed snippet to a temporary buffer. ;; write the pretty-printed snippet to a temporary buffer.
;; Use `replace-buffer-contents' to swap the original ;; Use `replace-region-contents' to swap the original
;; region with the contents of the temporary buffer so that point, ;; region with the contents of the temporary buffer so that point,
;; marks, etc. are kept. ;; marks, etc. are kept.
;; Stop as soon as we get an error from `json-read'. ;; Stop as soon as we get an error from `json-read'.
@ -825,16 +825,14 @@ With prefix argument MINIMIZE, minimize it instead."
(standard-output tmp-buf)) (standard-output tmp-buf))
(with-current-buffer tmp-buf (with-current-buffer tmp-buf
(erase-buffer) (json--print json)) (erase-buffer) (json--print json))
(save-restriction (replace-region-contents
(narrow-to-region beg (point)) beg (point) tmp-buf
(replace-buffer-contents
tmp-buf
json-pretty-print-max-secs json-pretty-print-max-secs
;; FIXME: What's a good value here? Can we use ;; FIXME: What's a good value here? Can we use
;; something better, e.g., by deriving a value ;; something better, e.g., by deriving a value
;; from the size of the region? ;; from the size of the region?
64) 64)
'keep-going)) 'keep-going)
;; EOF is expected because we json-read until we hit ;; EOF is expected because we json-read until we hit
;; the end of the narrow region. ;; the end of the narrow region.
(json-end-of-file nil)))))))))) (json-end-of-file nil))))))))))

View file

@ -3839,6 +3839,8 @@ If SILENT, don't echo progress in mode-line."
0 howmany))) 0 howmany)))
(done 0)) (done 0))
(mapc (pcase-lambda (`(,newText ,beg . ,end)) (mapc (pcase-lambda (`(,newText ,beg . ,end))
(if (> emacs-major-version 30)
(replace-region-contents beg end newText)
(let ((source (current-buffer))) (let ((source (current-buffer)))
(with-temp-buffer (with-temp-buffer
(insert newText) (insert newText)
@ -3847,9 +3849,10 @@ If SILENT, don't echo progress in mode-line."
(save-excursion (save-excursion
(save-restriction (save-restriction
(narrow-to-region beg end) (narrow-to-region beg end)
(replace-buffer-contents temp))) (with-no-warnings
(replace-buffer-contents temp)))))))))
(when reporter (when reporter
(eglot--reporter-update reporter (cl-incf done)))))))) (eglot--reporter-update reporter (cl-incf done))))
(mapcar (lambda (edit) (mapcar (lambda (edit)
(eglot--dcase edit (eglot--dcase edit
(((TextEdit) range newText) (((TextEdit) range newText)

View file

@ -6931,7 +6931,7 @@ Return non-nil if the buffer was actually modified."
(unless (eq 0 status) (unless (eq 0 status)
(error "%s exited with status %s (maybe isort is missing?)" (error "%s exited with status %s (maybe isort is missing?)"
python-interpreter status)) python-interpreter status))
(replace-buffer-contents temp) (replace-region-contents (point-min) (point-max) temp)
(not (eq tick (buffer-chars-modified-tick))))))))) (not (eq tick (buffer-chars-modified-tick)))))))))
;;;###autoload ;;;###autoload

View file

@ -1970,7 +1970,7 @@ of NEW (without destroying existing markers), swapping their text
objects, and finally killing buffer ORIGINAL." objects, and finally killing buffer ORIGINAL."
(with-current-buffer original (with-current-buffer original
(let ((inhibit-read-only t)) (let ((inhibit-read-only t))
(replace-buffer-contents new))) (replace-region-contents (point-min) (point-max) new)))
(with-current-buffer new (with-current-buffer new
(buffer-swap-text original)) (buffer-swap-text original))
(kill-buffer original)) (kill-buffer original))