From: Chong Yidong Date: Wed, 31 Dec 2008 02:44:00 +0000 (+0000) Subject: (buffer-swapped-with): New var, moved from files.el. Add advice to X-Git-Tag: emacs-pretest-23.0.90~781 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=aae1ecbbc8f532609e8cd334b234bc81dba5e6d8;p=emacs.git (buffer-swapped-with): New var, moved from files.el. Add advice to basic-save-buffer to use it. --- diff --git a/lisp/mail/pmail.el b/lisp/mail/pmail.el index 3a43cc0ce90..428102bdfc3 100644 --- a/lisp/mail/pmail.el +++ b/lisp/mail/pmail.el @@ -41,6 +41,34 @@ (require 'mail-utils) (eval-when-compile (require 'mule-util)) ; for detect-coding-with-priority + +;; The buffer-swapped-with feature has been moved here temporarily. +;; When pmail is merged, this advice must be eliminated and the +;; functionality somehow reimplemented. + +(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) + +(defadvice basic-save-buffer + (around check-swap activate) + "If this buffer's real contents are swapped with some other buffer, +temporarily unswap in order to save the real contents. This +advice is temporarily used by pmail until a satisfactory solution +can be written." + (if (not buffer-swapped-with) + ad-do-it + (unwind-protect + (let ((modp (buffer-modified-p))) + (buffer-swap-text buffer-swapped-with) + (set-buffer-modified-p modp) + ad-do-it) + (buffer-swap-text buffer-swapped-with) + (set-buffer-modified-p nil)))) + (defconst pmail-attribute-header "X-RMAIL-ATTRIBUTES" "The header that stores the Pmail attribute data.")