From aae1ecbbc8f532609e8cd334b234bc81dba5e6d8 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Wed, 31 Dec 2008 02:44:00 +0000 Subject: [PATCH] (buffer-swapped-with): New var, moved from files.el. Add advice to basic-save-buffer to use it. --- lisp/mail/pmail.el | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) 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.") -- 2.39.2