From: Richard M. Stallman Date: Mon, 22 Dec 2008 19:48:08 +0000 (+0000) Subject: (buffer-swapped-with): New variable. X-Git-Tag: emacs-pretest-23.0.90~913 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=6faf57bdbb4ef099bef9287d83f3aa596ae692af;p=emacs.git (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. --- diff --git a/lisp/files.el b/lisp/files.el index 0e303805d0c..a7c7902629d 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -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)