The command tries to preserve markers, properties and overlays.
If the operation takes more than this time, a single
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.
-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)
"Optional function for `revert-buffer-insert-file-contents-function'.
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.
-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
`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,
-see `replace-buffer-contents'."
+see `replace-region-contents'."
(cond
((not (file-exists-p file-name))
(error (if buffer-file-number
(let ((temp-buf (current-buffer)))
(set-buffer buf)
(let ((buffer-file-name nil))
- (replace-buffer-contents
+ (replace-region-contents
+ (point-min) (point-max)
temp-buf
revert-buffer-with-fine-grain-max-seconds))))))))
;; See comments in revert-buffer-with-fine-grain for an explanation.
(orig-buf (current-buffer)))
;; Strategy: Repeatedly `json-read' from the original buffer and
;; 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,
;; marks, etc. are kept.
;; Stop as soon as we get an error from `json-read'.
(standard-output tmp-buf))
(with-current-buffer tmp-buf
(erase-buffer) (json--print json))
- (save-restriction
- (narrow-to-region beg (point))
- (replace-buffer-contents
- tmp-buf
- json-pretty-print-max-secs
- ;; FIXME: What's a good value here? Can we use
- ;; something better, e.g., by deriving a value
- ;; from the size of the region?
- 64)
- 'keep-going))
+ (replace-region-contents
+ beg (point) tmp-buf
+ json-pretty-print-max-secs
+ ;; FIXME: What's a good value here? Can we use
+ ;; something better, e.g., by deriving a value
+ ;; from the size of the region?
+ 64)
+ 'keep-going)
;; EOF is expected because we json-read until we hit
;; the end of the narrow region.
(json-end-of-file nil))))))))))
0 howmany)))
(done 0))
(mapc (pcase-lambda (`(,newText ,beg . ,end))
- (let ((source (current-buffer)))
- (with-temp-buffer
- (insert newText)
- (let ((temp (current-buffer)))
- (with-current-buffer source
- (save-excursion
- (save-restriction
- (narrow-to-region beg end)
- (replace-buffer-contents temp)))
- (when reporter
- (eglot--reporter-update reporter (cl-incf done))))))))
+ (if (> emacs-major-version 30)
+ (replace-region-contents beg end newText)
+ (let ((source (current-buffer)))
+ (with-temp-buffer
+ (insert newText)
+ (let ((temp (current-buffer)))
+ (with-current-buffer source
+ (save-excursion
+ (save-restriction
+ (narrow-to-region beg end)
+ (with-no-warnings
+ (replace-buffer-contents temp)))))))))
+ (when reporter
+ (eglot--reporter-update reporter (cl-incf done))))
(mapcar (lambda (edit)
(eglot--dcase edit
(((TextEdit) range newText)
(unless (eq 0 status)
(error "%s exited with status %s (maybe isort is missing?)"
python-interpreter status))
- (replace-buffer-contents temp)
+ (replace-region-contents (point-min) (point-max) temp)
(not (eq tick (buffer-chars-modified-tick)))))))))
;;;###autoload
objects, and finally killing buffer ORIGINAL."
(with-current-buffer original
(let ((inhibit-read-only t))
- (replace-buffer-contents new)))
+ (replace-region-contents (point-min) (point-max) new)))
(with-current-buffer new
(buffer-swap-text original))
(kill-buffer original))