# HG changeset patch # User Chong Yidong # Date 1230691440 0 # Node ID e680c5af27d36f99f1f32fc6fc222ea536f62283 # Parent 1035b9c820e8f1892a72c1d2039519154a0b41d0 (buffer-swapped-with): New var, moved from files.el. Add advice to basic-save-buffer to use it. diff -r 1035b9c820e8 -r e680c5af27d3 lisp/mail/pmail.el --- a/lisp/mail/pmail.el Wed Dec 31 02:43:13 2008 +0000 +++ b/lisp/mail/pmail.el Wed Dec 31 02:44:00 2008 +0000 @@ -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.")