Fix typo.
[elisp/wanderlust.git] / elmo / elmo-dop.el
index 0aeb228..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
@@ -65,7 +65,7 @@ even an operation concerns the unplugged folder."
       (setq queue (cdr queue)))
     (when (> count 0)
       (if (elmo-y-or-n-p
-          (format "%d pending operation(s) exists. Perform now?" count)
+          (format "%d pending operation(s) exists.  Perform now? " count)
           (not elmo-dop-flush-confirm) t)
          (progn
            (message "")
@@ -107,7 +107,7 @@ even an operation concerns the unplugged folder."
                    (when (and (string= func "create-folder-maybe")
                               (elmo-y-or-n-p
                                (format
-                                "Create folder %s failed. Abort creating?"
+                                "Create folder %s failed.  Abort creating? "
                                 folder)
                                (not elmo-dop-flush-confirm) t))
                      (elmo-dop-save-pending-messages folder)
@@ -119,7 +119,7 @@ even an operation concerns the unplugged folder."
                       performed num)
              (sit-for 1) ; 
              (elmo-dop-queue-save)))
-       (if (elmo-y-or-n-p "Clear all pending operations?"
+       (if (elmo-y-or-n-p "Clear all pending operations? "
                           (not elmo-dop-flush-confirm) t)
            (let ((queue elmo-dop-queue))
              (while 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
@@ -315,10 +336,10 @@ even an operation concerns the unplugged folder."
        matched)
     (if (eq (elmo-folder-get-type folder) 'imap4)
        (progn
-;;       (while append-list
-;;         (if (setq matched (car (rassoc (car append-list) number-alist)))
-;;             (setq msgs (delete matched msgs)))
-;;         (setq append-list (cdr append-list)))
+;;;      (while append-list
+;;;        (if (setq matched (car (rassoc (car append-list) number-alist)))
+;;;            (setq msgs (delete matched msgs)))
+;;;        (setq append-list (cdr append-list)))
          (if msgs
              (elmo-dop-queue-append folder func-name msgs)))
       ;; maildir... XXX hard coding.....
@@ -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))
@@ -365,7 +386,7 @@ even an operation concerns the unplugged folder."
        (elmo-dop-unlock-message (car append-list)))
       (setq append-list (cdr append-list))
       (elmo-dop-append-list-save folder nil)))
-  (message (format "Saving queued message in %s...done."
+  (message (format "Saving queued message in %s...done"
                   elmo-lost+found-folder)))
 
 (defun elmo-dop-flush-pending-append-operations (folder &optional appends resume)
@@ -379,7 +400,7 @@ even an operation concerns the unplugged folder."
     (when resume
       ;; Resume msgdb changed by elmo-dop-msgdb-create.
       (let* ((resumed-list (elmo-dop-append-list-load folder t))
-            (number-alist (elmo-msgdb-number-load 
+            (number-alist (elmo-msgdb-number-load
                            (elmo-msgdb-expand-path folder)))
             (appendings append-list)
             pair dels)
@@ -390,7 +411,7 @@ even an operation concerns the unplugged folder."
          (setq appendings (cdr appendings)))
        (elmo-dop-append-list-save folder resumed-list t)))
     (while appendings
-      (let* ((seen-list (elmo-msgdb-seen-load 
+      (let* ((seen-list (elmo-msgdb-seen-load
                         (elmo-msgdb-expand-path folder))))
        (setq failure nil)
        (setq file-string (elmo-get-file-string  ; message string
@@ -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))
@@ -420,7 +443,7 @@ even an operation concerns the unplugged folder."
        (setq elmo-dop-queue (delete (list folder "append-operations" nil)
                                     elmo-dop-queue))
        (elmo-dop-queue-save))))
-  (message "Appending queued messages...done."))
+  (message "Appending queued messages...done"))
 
 (defun elmo-dop-folder-exists-p (folder)
   (or (file-exists-p (elmo-msgdb-expand-path folder))