ptexinfmt.el; Fix last change
[elisp/wanderlust.git] / elmo / elmo-cache.el
index ce178a5..37f506c 100644 (file)
@@ -36,7 +36,8 @@
 (require 'elmo-map)
 
 (eval-and-compile
-  (luna-define-class elmo-cache-folder (elmo-map-folder) (dir-name directory))
+  (luna-define-class elmo-cache-folder (elmo-map-folder elmo-file-tag)
+                    (dir-name directory))
   (luna-define-internal-accessors 'elmo-cache-folder))
 
 (luna-define-method elmo-folder-initialize ((folder elmo-cache-folder)
 
 (luna-define-method elmo-folder-msgdb-create ((folder elmo-cache-folder)
                                              numbers flag-table)
-  (let ((i 0)
-       (len (length numbers))
-       (new-msgdb (elmo-make-msgdb))
+  (let ((new-msgdb (elmo-make-msgdb))
        entity message-id flags)
-    (message "Creating msgdb...")
-    (while numbers
-      (setq entity
-           (elmo-msgdb-create-message-entity-from-file
-            (elmo-msgdb-message-entity-handler new-msgdb)
-            (car numbers) (elmo-message-file-name folder (car numbers))))
-      (when entity
-       (setq message-id (elmo-message-entity-field entity 'message-id)
-             flags (elmo-flag-table-get flag-table message-id))
-       (elmo-global-flags-set flags folder (car numbers) message-id)
-       (elmo-msgdb-append-entity new-msgdb entity flags))
-      (when (> len elmo-display-progress-threshold)
-       (setq i (1+ i))
-       (elmo-display-progress
-        'elmo-cache-folder-msgdb-create "Creating msgdb..."
-        (/ (* i 100) len)))
-      (setq numbers (cdr numbers)))
-    (message "Creating msgdb...done")
+    (elmo-with-progress-display (elmo-folder-msgdb-create (length numbers))
+       "Creating msgdb"
+      (dolist (number numbers)
+       (setq entity
+             (elmo-msgdb-create-message-entity-from-file
+              (elmo-msgdb-message-entity-handler new-msgdb)
+              number
+              (elmo-message-file-name folder number)))
+       (when entity
+         (setq message-id (elmo-message-entity-field entity 'message-id)
+               flags (elmo-flag-table-get flag-table message-id))
+         (elmo-global-flags-set flags folder number message-id)
+         (elmo-msgdb-append-entity new-msgdb entity flags))
+       (elmo-progress-notify 'elmo-folder-msgdb-create)))
     new-msgdb))
 
 (luna-define-method elmo-folder-append-buffer ((folder elmo-cache-folder)
                       (elmo-cache-folder-directory-internal folder))))
   t)
 
-(luna-define-method elmo-message-fetch-with-cache-process
-  ((folder elmo-cache-folder) number strategy &optional section unseen)
-  ;; disbable cache process
-  (elmo-message-fetch-internal folder number strategy section unseen))
+(luna-define-method elmo-message-fetch
+  ((folder elmo-cache-folder) number strategy &optional unseen section)
+  ;; disable cache process
+  (erase-buffer)
+  (when (elmo-message-fetch-internal folder number strategy section unseen)
+    (when (and (not unseen)
+              (elmo-message-flagged-p folder number 'unread))
+      (elmo-message-unset-flag folder number 'unread))
+    t))
 
 (luna-define-method elmo-map-message-fetch ((folder elmo-cache-folder)
                                            location strategy