Expire reserved messages.
authorvitaly <v.mayatskih@gmail.com>
Mon, 2 Feb 2009 08:45:44 +0000 (2 09:45 +0100)
committervitaly <v.mayatskih@gmail.com>
Mon, 2 Feb 2009 08:45:44 +0000 (2 09:45 +0100)
There are problems expiring some folders at gmail. For example,
certain messages are Cc'ed to LKML and ppc-dev mailing lists, but
gmail stores only one copy of message in its database and labels
this copy as LKML and ppc-dev. Wanderlust can't expire such
messages, they are "reserved" for him.

Now it is possible to allow expiration of such messages in Summary
buffer.

wl/wl-expire.el

index ca73443..376ccf8 100644 (file)
@@ -97,7 +97,7 @@
 
 (defun wl-expire-delete-reserved-messages (msgs folder)
   "Delete a number from NUMBERS when a message with the number is reserved."
-  (remove-if #'(lambda (x) (not (wl-expire-message-p folder x))) msgs))
+  (remove-if-not #'(lambda (x) (wl-expire-message-p folder x))) msgs)
 
 ;; End New functions.
 
@@ -592,14 +592,16 @@ ex. +ml/wl/1999_11/, +ml/wl/1999_12/."
                (y-or-n-p (format "Expire %s? " folder-name)))
        (save-excursion
          (run-hooks 'wl-summary-expire-pre-hook)
-         (let* ((expireable (apply #'wl-expireable-messages-list folder 
+         (let* ((keep-reserved (or (not (interactive-p))
+                                   (y-or-n-p (format "Keep reserved marks?"))))
+                (expireable (apply #'wl-expireable-messages-list folder
                                    all rule))
                 (expired (and expireable
                               (or (not (interactive-p))
                                   (y-or-n-p (format "Expire %d messages?"
                                                     (length expireable))))
-                              (apply #'wl-expire-folder folder 
-                                     expireable rule))))
+                              (wl-expire-folder folder expireable (car rule)
+                                                (cadr rule) (not keep-reserved)))))
            (when (and (not wl-expire-test)
                       (not notsummary)
                       expired)
@@ -661,7 +663,7 @@ ex. +ml/wl/1999_11/, +ml/wl/1999_12/."
       (prog1
          (cond ((eq action nil) nil)
                ((eq action 'remove)
-                (car (wl-expire-delete folder targets)))
+                (car (wl-expire-delete folder targets (car args))))
                ((eq action 'trash)
                 (car (wl-expire-refile folder targets wl-trash-folder)))
                ((eq action 'hide)