emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp ChangeLog mail/rmail.el mail/rmailou...


From: Richard M. Stallman
Subject: [Emacs-diffs] emacs/lisp ChangeLog mail/rmail.el mail/rmailou...
Date: Thu, 09 Apr 2009 16:43:06 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Richard M. Stallman <rms>       09/04/09 16:43:05

Modified files:
        lisp           : ChangeLog 
        lisp/mail      : rmail.el rmailout.el 

Log message:
        Don't query before visiting a Babyl file.
        Instead, query before modifications that would save it.
        
        * mail/rmail.el (rmail-was-converted): New variable.
        (rmail-seriously-modified): New variable.
        (rmail-perm-variables): Set them to nil.
        (rmail-convert-babyl-to-mbox): Don't query about converting Babyl file.
        Instead, set rmail-was-converted.
        (rmail-modify-format): New function.  Query if save will change format.
        (rmail-dont-modify-format): New function.
        (rmail-duplicate-message, rmail-get-new-mail):
        Call rmail-modify-format.
        (rmail-set-header): Call rmail-dont-modify-format.
        (rmail-set-attribute): Likewise.
        (rmail-expunge-confirmed): Call rmail-modify-format.
        
        * mail/rmailout.el (rmail-output-to-rmail-buffer):
        Call rmail-modify-format.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/ChangeLog?cvsroot=emacs&r1=1.15566&r2=1.15567
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/mail/rmail.el?cvsroot=emacs&r1=1.532&r2=1.533
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/mail/rmailout.el?cvsroot=emacs&r1=1.98&r2=1.99

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.15566
retrieving revision 1.15567
diff -u -b -r1.15566 -r1.15567
--- ChangeLog   9 Apr 2009 16:33:41 -0000       1.15566
+++ ChangeLog   9 Apr 2009 16:43:02 -0000       1.15567
@@ -1,5 +1,21 @@
 2009-04-09  Richard M Stallman  <address@hidden>
 
+       * mail/rmailout.el (rmail-output-to-rmail-buffer):
+       Call rmail-modify-format..
+
+       * mail/rmail.el (rmail-was-converted): New variable.
+       (rmail-seriously-modified): New variable.
+       (rmail-perm-variables): Set them to nil.
+       (rmail-convert-babyl-to-mbox): Don't query about converting Babyl file.
+       Instead, set rmail-was-converted.
+       (rmail-modify-format): New function.  Query if save will change format.
+       (rmail-dont-modify-format): New function.
+       (rmail-duplicate-message, rmail-get-new-mail):
+       Call rmail-modify-format.
+       (rmail-set-header): Call rmail-dont-modify-format.
+       (rmail-set-attribute): Likewise.
+       (rmail-expunge-confirmed): Call rmail-modify-format.
+
        * mail/sendmail.el (sendmail-send-it): Replace any
        pre-existing Content-type header if we insert one.
 

Index: mail/rmail.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/mail/rmail.el,v
retrieving revision 1.532
retrieving revision 1.533
diff -u -b -r1.532 -r1.533
--- mail/rmail.el       8 Apr 2009 12:41:48 -0000       1.532
+++ mail/rmail.el       9 Apr 2009 16:43:05 -0000       1.533
@@ -544,6 +544,14 @@
 In a summary buffer, this holds the RMAIL buffer it is a summary for.")
 (put 'rmail-buffer 'permanent-local t)
 
+(defvar rmail-was-converted nil
+  "Non-nil in an Rmail buffer that was just converted from Babyl format.")
+(put 'rmail-was-converted 'permanent-local t)
+
+(defvar rmail-seriously-modified nil
+  "Non-nil in an Rmail buffer that has been modified in a major way.")
+(put 'rmail-seriously-modified 'permanent-local t)
+
 ;; Message counters and markers.  Deleted flags.
 
 (defvar rmail-current-message nil
@@ -939,9 +947,6 @@
 (defun rmail-convert-babyl-to-mbox ()
   "Convert the mail file from Babyl version 5 to mbox.
 This function also reinitializes local variables used by Rmail."
-  (unless (y-or-n-p "Babyl mail file detected.  Rmail now uses mbox format for 
mail files.
-Convert Babyl mail file to mbox format? ")
-    (error "Aborted"))
   (let ((old-file (make-temp-file "rmail"))
        (new-file (make-temp-file "rmail")))
     (unwind-protect
@@ -961,6 +966,7 @@
            (rmail-mode-1)
            (rmail-perm-variables)
            (rmail-variables)
+           (setq rmail-was-converted t)
            (goto-char (point-max))
            (rmail-set-message-counters))
          (message "Replacing BABYL format with mbox format...done"))
@@ -1334,6 +1340,24 @@
       (rmail-swap-buffers)
       (setq rmail-buffer-swapped nil))))
 
+(defun rmail-modify-format ()
+  "Warn if important modifications would change Rmail file's format."
+  (with-current-buffer rmail-buffer
+    (and rmail-was-converted
+        ;; If it's already modified, don't warn again.
+        (not rmail-seriously-modified)
+        (not
+         (yes-or-no-p
+          (message "After this, %s would be saved in mbox format.  Proceed? "
+                   (buffer-name))))
+        (error "Aborted"))
+    (setq rmail-seriously-modified t)))
+
+(defun rmail-dont-modify-format ()
+  (when (and rmail-was-converted (not rmail-seriously-modified))
+    (set-buffer-modified-p nil)
+    (message "Marking buffer unmodified to avoid rewriting Babyl file as mbox 
file")))
+
 (defun rmail-mode-kill-buffer-hook ()
   (if (buffer-live-p rmail-view-buffer) (kill-buffer rmail-view-buffer)))
 
@@ -1342,6 +1366,10 @@
   (make-local-variable 'rmail-last-regexp)
   (make-local-variable 'rmail-deleted-vector)
   (make-local-variable 'rmail-buffer)
+  (make-local-variable 'rmail-was-converted)
+  (setq rmail-was-converted nil)
+  (make-local-variable 'rmail-seriously-modified)
+  (setq rmail-seriously-modified nil)
   (setq rmail-buffer (current-buffer))
   (set-buffer-multibyte nil)
   (with-current-buffer (setq rmail-view-buffer (rmail-generate-viewer-buffer))
@@ -1483,6 +1511,7 @@
   ;; If we are in a summary buffer, switch to the Rmail buffer.
   ;; FIXME simpler to swap the contents, not the buffers?
   (set-buffer rmail-buffer)
+  (rmail-modify-format)
   (let ((buff (current-buffer))
         (n rmail-current-message)
         (beg (rmail-msgbeg rmail-current-message))
@@ -1629,6 +1658,7 @@
   (or (verify-visited-file-modtime (current-buffer))
       (find-file (buffer-file-name)))
   (set-buffer rmail-buffer)
+  (rmail-modify-format)
   (rmail-swap-buffers-maybe)
   (rmail-maybe-set-message-counters)
   (widen)
@@ -2049,10 +2079,13 @@
 If MSGNUM is nil, use the current message.  NAME and VALUE are strings.
 VALUE may also be nil, meaning to remove the header."
   (rmail-apply-in-message msgnum 'rmail-set-header-1 name value)
+  (with-current-buffer rmail-buffer
   ;; Ensure header changes get saved.
   ;; (Note replacing a header with an identical copy modifies.)
-  (with-current-buffer rmail-buffer (set-buffer-modified-p t)))
-
+    (set-buffer-modified-p t)
+    ;; However: don't save in mbox format over a Babyl file
+    ;; merely because of this.
+    (rmail-dont-modify-format)))
 
 ;;;; *** Rmail Attributes and Keywords ***
 
@@ -2188,10 +2221,9 @@
               (rmail-apply-in-message msgnum 'rmail-set-attribute-1 attr state)
             (if (= msgnum rmail-current-message)
                 (rmail-display-labels)))
-          ;; If we made a significant change in an attribute, mark
-          ;; rmail-buffer modified, so it will be (1) saved and (2)
-          ;; displayed in the mode line.
-          (set-buffer-modified-p t)))))
+         ;; Don't save in mbox format over a Babyl file
+         ;; merely because of this.
+         (rmail-dont-modify-format)))))
 
 (defun rmail-message-attr-p (msg attrs)
   "Return non-nil if message number MSG has attributes matching regexp ATTRS."
@@ -2564,9 +2596,10 @@
            (t (setq rmail-current-message msg)))
       (with-current-buffer rmail-buffer
        (setq header-style rmail-header-style)
-       ;; Mark the message as seen, bracket the message in the mail
-       ;; buffer and determine the coding system the transfer encoding.
+       ;; Mark the message as seen
        (rmail-set-attribute rmail-unseen-attr-index nil)
+       ;; bracket the message in the mail
+       ;; buffer and determine the coding system the transfer encoding.
        (rmail-swap-buffers-maybe)
        (setq beg (rmail-msgbeg msg)
              end (rmail-msgend msg))
@@ -3179,9 +3212,10 @@
   ;; Eg to save rmail-expunge wasting its time?
   (or (not (stringp rmail-deleted-vector))
       (not (string-match "D" rmail-deleted-vector))
-      (null rmail-confirm-expunge)
+      (if rmail-confirm-expunge
       (funcall rmail-confirm-expunge
-              "Erase deleted messages from Rmail file? ")))
+                  "Erase deleted messages from Rmail file? ")
+       (progn (rmail-modify-format) t))))
 
 (defun rmail-only-expunge (&optional dont-show)
   "Actually erase all deleted messages in the file."

Index: mail/rmailout.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/mail/rmailout.el,v
retrieving revision 1.98
retrieving revision 1.99
diff -u -b -r1.98 -r1.99
--- mail/rmailout.el    5 Mar 2009 03:43:01 -0000       1.98
+++ mail/rmailout.el    9 Apr 2009 16:43:05 -0000       1.99
@@ -366,6 +366,7 @@
 display message number MSG."
   (save-excursion
     (rmail-swap-buffers-maybe)
+    (rmail-modify-format)
     ;; Turn on Auto Save mode, if it's off in this buffer but enabled
     ;; by default.
     (and (not buffer-auto-save-file-name)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]