Hi Ihor,
I'm currently working on porting changes from Emacs's master branch to
Org's main. In the process, I was reviewing d2e1c6789 (Use
`replace-region-contents' instead of `replace-buffer-contents',
2025-05-01) because it conflicts with one of the Emacs commits.
> diff --git a/lisp/org-src.el b/lisp/org-src.el
> index 6570b1b2a..d3f40cf35 100644
> --- a/lisp/org-src.el
> +++ b/lisp/org-src.el
> @@ -1420,7 +1420,7 @@ (defun org-edit-src-save ()
> (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)
> + (replace-region-contents beg end write-back-buf 0.1 nil)
Is it valid to pass a buffer as the third argument of
replace-region-contents on Emacs 30 or earlier? If I understand
correctly, that capability came with Emacs's 7c82cc8b975 (2025-03-29).
For reference, the changes to org-edit-src-save on Emacs's side came in
6bcf41c311b (Org: Use new `replace-region-contents`, 2025-03-29). I was
not planning to pull in that commit's changes without adjustments [*],
but it may be a good idea to follow that commit's general approach.
[*] ... at the very least, the changes from Org's 2d9e70b80
(org-edit-src-*: When writing back, do not displace point in undo
list, 2024-07-09) should be considered. Plus, for compatibility, I
think we'd want to keep org-replace-buffer-contents around but mark
it as obsolete.