Mercurial > emacs
diff lisp/mail/pmail.el @ 100800:e680c5af27d3
(buffer-swapped-with): New var, moved from files.el. Add advice to
basic-save-buffer to use it.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Wed, 31 Dec 2008 02:44:00 +0000 |
parents | d9d23e4f6b00 |
children | a9dc0e7c3f2b |
line wrap: on
line diff
--- 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.")