(nnimap-expiry-target): New function.
authorSimon Josefsson <jas@extundo.com>
Sat, 23 Dec 2000 15:33:25 +0000 (15:33 +0000)
committerSimon Josefsson <jas@extundo.com>
Sat, 23 Dec 2000 15:33:25 +0000 (15:33 +0000)
(nnimap-request-expire-articles): Use it.

lisp/ChangeLog
lisp/nnimap.el

index d43adf3..e0baeff 100644 (file)
@@ -1,3 +1,8 @@
+2000-12-23  Simon Josefsson  <sj@extundo.com>
+
+       * nnimap.el (nnimap-expiry-target): New function.
+       (nnimap-request-expire-articles): Use it.
+
 2000-12-22 21:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
        * gnus.el (gnus-group-parameters-more): New variable.
index 917f994..0338873 100644 (file)
@@ -1100,22 +1100,37 @@ function is generally only called when Gnus is shutting down."
   (gnus-message 5 "nnimap: Marking article %d for deletion..."
                imap-current-message))
 
+
+(defun nnimap-expiry-target (arts group server)
+  (unless (eq nnmail-expiry-target 'delete)
+    (with-current-buffer nntp-server-buffer
+      (dolist (art (gnus-uncompress-sequence arts))
+       (nnimap-request-article art group server)
+       ;; hints for optimization in `nnimap-request-accept-article'
+       (let ((nnimap-current-move-article art)
+             (nnimap-current-move-group group)
+             (nnimap-current-move-server server))
+         (nnmail-expiry-target-group nnmail-expiry-target group))))))
+
 ;; Notice that we don't actually delete anything, we just mark them deleted.
 (deffoo nnimap-request-expire-articles (articles group &optional server force)
   (let ((artseq (gnus-compress-sequence articles)))
     (when (and artseq (nnimap-possibly-change-group group server))
       (with-current-buffer nnimap-server-buffer
        (if force
-           (and (imap-message-flags-add
-                 (imap-range-to-message-set artseq) "\\Deleted")
-                (setq articles nil))
+           (progn
+             (nnimap-expiry-target artseq group server)
+             (when (imap-message-flags-add (imap-range-to-message-set artseq)
+                                           "\\Deleted")
+               (setq articles nil)))
          (let ((days (or (and nnmail-expiry-wait-function
                               (funcall nnmail-expiry-wait-function group))
                          nnmail-expiry-wait)))
            (cond ((eq days 'immediate)
-                  (and (imap-message-flags-add
-                        (imap-range-to-message-set artseq) "\\Deleted")
-                       (setq articles nil)))
+                  (nnimap-expiry-target artseq group server)
+                  (when (imap-message-flags-add
+                         (imap-range-to-message-set artseq) "\\Deleted")
+                    (setq articles nil)))
                  ((numberp days)
                   (let ((oldarts (imap-search
                                   (format "UID %s NOT SINCE %s"
@@ -1123,6 +1138,7 @@ function is generally only called when Gnus is shutting down."
                                           (nnimap-date-days-ago days))))
                         (imap-fetch-data-hook
                          '(nnimap-request-expire-articles-progress)))
+                    (nnimap-expiry-target oldarts group server)
                     (and oldarts
                          (imap-message-flags-add
                           (imap-range-to-message-set