1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-28 10:51:29 -08:00

(buffer-swapped-with): New variable.

(basic-save-buffer-0): Most of basic-save-buffer moved here.
(basic-save-buffer): Unswap the buffer temporarily if nec.
This commit is contained in:
Richard M. Stallman 2008-12-22 19:48:08 +00:00
parent a10374238a
commit 6faf57bdbb

View file

@ -4065,6 +4065,13 @@ in such cases.")
(make-variable-buffer-local 'save-buffer-coding-system)
(put 'save-buffer-coding-system 'permanent-local t)
(defvar buffer-swapped-with nil
"Buffer that this buffer's contents are temporarily swapped with.
You should only set this variable in file-visiting buffers,
because it only affects how to save the buffer in its file.")
(make-variable-buffer-local 'buffer-swapped-with)
(defun basic-save-buffer ()
"Save the current buffer in its visited file, if it has been modified.
The hooks `write-contents-functions' and `write-file-functions' get a chance
@ -4073,6 +4080,17 @@ the visited file in the usual way.
Before and after saving the buffer, this function runs
`before-save-hook' and `after-save-hook', respectively."
(interactive)
(if (not buffer-swapped-with)
(basic-save-buffer-0)
;; If this buffer's real contents are "swapped" with some other buffer,
;; temporarily unswap in order to save the real contents.
(unwind-protect
(progn
(buffer-swap-text buffer-swapped-with)
(basic-save-buffer-0))
(buffer-swap-text buffer-swapped-with))))
(defun basic-save-buffer-0 ()
(save-current-buffer
;; In an indirect buffer, save its base buffer instead.
(if (buffer-base-buffer)