Fix typo.
[elisp/wanderlust.git] / elmo / elmo-dop.el
index 19e7a42..b944188 100644 (file)
@@ -1,6 +1,6 @@
 ;;; elmo-dop.el -- Modules for Disconnected Operations on ELMO.
 
-;; Copyright 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
+;; Copyright (C) 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
 
 ;; Author: Yuuichi Teranishi <teranisi@gohome.org>
 ;; Keywords: mail, net news
@@ -42,7 +42,7 @@
 Automatically loaded/saved.")
 
 (defun elmo-dop-queue-append (folder function argument)
-  (let ((operation (list (format "%s" folder) function argument)))
+  (let ((operation (list (elmo-string folder) function argument)))
     (elmo-dop-queue-load)
     (unless (member operation elmo-dop-queue) ;; don't append same operation
       (setq elmo-dop-queue
@@ -241,6 +241,25 @@ even an operation concerns the unplugged folder."
       (setq numbers (cdr numbers)))
     (cons appended deleting-msgids)))
 
+(defun elmo-dop-list-deleted (folder number-alist)
+  "List message numbers to be deleted on FOLDER from NUMBER-ALIST."
+  (elmo-dop-queue-load)
+  (let ((queue elmo-dop-queue)
+       numbers matches nalist)
+    (while queue
+      (if (and (string= (nth 0 (car queue)) folder)
+              (string= (nth 1 (car queue)) "delete-msgids"))
+         (setq numbers
+               (nconc numbers
+                      (delq nil (mapcar
+                                 (lambda (x)
+                                   (mapcar 'car
+                                           (elmo-string-rassoc-all
+                                            x number-alist)))
+                                 (nth 2 (car queue)))))))
+      (setq queue (cdr queue)))
+    (elmo-uniq-list (elmo-flatten numbers))))
+
 (defun elmo-dop-delete-msgs (folder msgs msgdb)
   (save-match-data
     (let ((folder-numbers (elmo-make-folder-numbers-list folder msgs))
@@ -272,7 +291,7 @@ even an operation concerns the unplugged folder."
   (save-match-data
     (elmo-dop-queue-append folder "prefetch-msgs" msgs)))
 
-(defun elmo-dop-list-folder (folder)
+(defun elmo-dop-list-folder (folder &optional nohide)
   (if (or (memq (elmo-folder-get-type folder)
                '(imap4 nntp pop3 filter pipe))
          (and (elmo-multi-p folder) (not (elmo-folder-local-p folder))))
@@ -287,6 +306,8 @@ even an operation concerns the unplugged folder."
                 alreadies
                 max-num
                 (i 0))
+           (setq killed (nconc (elmo-dop-list-deleted folder number-alist)
+                               killed))
            (while append-list
              (if (rassoc (car append-list) number-alist)
                  (setq alreadies (append alreadies
@@ -332,7 +353,7 @@ even an operation concerns the unplugged folder."
   (if (eq (elmo-folder-get-type folder) 'imap4)
       (if elmo-enable-disconnected-operation
          (let* ((number-alist (elmo-msgdb-number-load
-                                      (elmo-msgdb-expand-path folder)))
+                               (elmo-msgdb-expand-path folder)))
                 (number-list (mapcar 'car number-alist))
                 (append-list (elmo-dop-append-list-load folder))
                 (append-num (length append-list))
@@ -398,8 +419,10 @@ even an operation concerns the unplugged folder."
                            (car appendings))))
        (when file-string
          (condition-case ()
-             (elmo-append-msg folder file-string (car appendings) nil
-                              (not (member (car appendings) seen-list)))
+             (setq failure (not 
+                            (elmo-append-msg 
+                             folder file-string (car appendings) nil
+                             (not (member (car appendings) seen-list)))))
            (quit  (setq failure t))
            (error (setq failure t)))
          (setq i (+ 1 i))