Fix typo.
[elisp/wanderlust.git] / elmo / elmo-dop.el
index 64b7dbe..b944188 100644 (file)
 ;;; Code:
 ;; 
 
-(require 'elmo)
 (require 'elmo-vars)
 (require 'elmo-msgdb)
 (require 'elmo-util)
+(eval-when-compile
+  (require 'elmo-imap4)
+  (require 'elmo-localdir))
 
 ;; global variable.
 (defvar elmo-dop-queue nil
@@ -40,8 +42,7 @@
 Automatically loaded/saved.")
 
 (defun elmo-dop-queue-append (folder function argument)
-  (let ((operation (list (elmo-folder-name-internal 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
@@ -59,7 +60,7 @@ even an operation concerns the unplugged folder."
        (count 0)
        len)
     (while queue
-      (if (or force (elmo-folder-plugged-p (elmo-make-folder (caar queue))))
+      (if (or force (elmo-folder-plugged-p (caar queue)))
          (setq count (1+ count)))
       (setq queue (cdr queue)))
     (when (> count 0)
@@ -212,7 +213,7 @@ even an operation concerns the unplugged folder."
    (expand-file-name (if resume
                         elmo-msgdb-resume-list-filename
                       elmo-msgdb-append-list-filename)
-                    (elmo-folder-msgdb-path folder))))
+                    (elmo-msgdb-expand-path folder))))
 
 (defun elmo-dop-append-list-save (folder append-list &optional resume)
   (if append-list
@@ -220,13 +221,13 @@ even an operation concerns the unplugged folder."
        (expand-file-name (if resume
                             elmo-msgdb-resume-list-filename
                           elmo-msgdb-append-list-filename)
-                        (elmo-folder-msgdb-path folder))
+                        (elmo-msgdb-expand-path folder))
        append-list)
     (condition-case ()
        (delete-file (expand-file-name (if resume
                                           elmo-msgdb-resume-list-filename
                                         elmo-msgdb-append-list-filename)
-                                      (elmo-folder-msgdb-path folder)))
+                                      (elmo-msgdb-expand-path folder)))
       (error))))
 
 (defun elmo-dop-deleting-numbers-to-msgids (alist numbers appended)
@@ -240,13 +241,13 @@ even an operation concerns the unplugged folder."
       (setq numbers (cdr numbers)))
     (cons appended deleting-msgids)))
 
-(defun elmo-dop-list-deleted (name number-alist)
-  "List message numbers to be deleted on folder with NAME from NUMBER-ALIST."
+(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)) name)
+      (if (and (string= (nth 0 (car queue)) folder)
               (string= (nth 1 (car queue)) "delete-msgids"))
          (setq numbers
                (nconc numbers
@@ -290,32 +291,41 @@ even an operation concerns the unplugged folder."
   (save-match-data
     (elmo-dop-queue-append folder "prefetch-msgs" msgs)))
 
-(defun elmo-dop-list-messages (folder)
-  (let* ((path (elmo-msgdb-expand-path folder))
-        (number-alist (elmo-msgdb-number-load path))
-        (number-list (mapcar 'car number-alist))
-        (append-list (elmo-dop-append-list-load folder))
-        (append-num (length append-list))
-        alreadies
-        killed
-        max-num
-        (i 0))
-    (setq killed (elmo-dop-list-deleted folder number-alist))
-    (while append-list
-      (if (rassoc (car append-list) number-alist)
-         (setq alreadies (append alreadies
-                                 (list (car append-list)))))
-      (setq append-list (cdr append-list)))
-    (setq append-num (- append-num (length alreadies)))
-    (setq max-num
-         (or (nth (max (- (length number-list) 1) 0)
-                  number-list) 0))
-    (while (< i append-num)
-      (setq number-list
-           (append number-list
-                   (list (+ max-num i 1))))
-      (setq i (+ 1 i)))
-    (elmo-living-messages number-list killed)))
+(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))))
+      (if elmo-enable-disconnected-operation
+         (let* ((path (elmo-msgdb-expand-path folder))
+                (number-alist (elmo-msgdb-number-load path))
+                (number-list (mapcar 'car number-alist))
+                (append-list (elmo-dop-append-list-load folder))
+                (append-num (length append-list))
+                (killed (and elmo-use-killed-list
+                             (elmo-msgdb-killed-list-load path)))
+                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
+                                         (list (car append-list)))))
+             (setq append-list (cdr append-list)))
+           (setq append-num (- append-num (length alreadies)))
+           (setq max-num
+                 (or (nth (max (- (length number-list) 1) 0)
+                          number-list) 0))
+           (while (< i append-num)
+             (setq number-list
+                   (append number-list
+                           (list (+ max-num i 1))))
+             (setq i (+ 1 i)))
+           (elmo-living-messages number-list killed))
+       (error "Unplugged"))
+    ;; not imap4 folder...list folder
+    (elmo-call-func folder "list-folder")))
 
 (defun elmo-dop-count-appended (folder)
   (length (elmo-dop-append-list-load folder)))
@@ -339,26 +349,6 @@ even an operation concerns the unplugged folder."
               (elmo-folder-get-spec folder)
               msgs msgdb))))
 
-(defun elmo-dop-folder-status (folder)
-  (let* ((number-alist (elmo-msgdb-number-load
-                       (elmo-folder-msgdb-path folder)))
-        (number-list (mapcar 'car number-alist))
-        (append-list (elmo-dop-append-list-load folder))
-        (append-num (length append-list))
-        alreadies
-        (i 0)
-        max-num)
-    (while append-list
-      (if (rassoc (car append-list) number-alist)
-         (setq alreadies (append alreadies
-                                 (list (car append-list)))))
-      (setq append-list (cdr append-list)))
-    (setq max-num
-         (or (nth (max (- (length number-list) 1) 0) number-list)
-             0))
-    (cons (- (+ max-num append-num) (length alreadies))
-         (- (+ (length number-list) append-num) (length alreadies)))))
-
 (defun elmo-dop-max-of-folder (folder)
   (if (eq (elmo-folder-get-type folder) 'imap4)
       (if elmo-enable-disconnected-operation
@@ -429,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))