* wl.el (wl-init): Setup faces accoding to wl-summary-flag-alist.
[elisp/wanderlust.git] / elmo / modb-standard.el
index 5a60da4..9bfcd09 100644 (file)
@@ -32,7 +32,6 @@
 (eval-when-compile (require 'cl))
 
 (require 'elmo-util)
-(require 'mime)
 (require 'modb)
 
 (defcustom modb-standard-divide-number 500
    (modb-standard-number-list-internal msgdb)))
 
 (luna-define-method elmo-msgdb-list-flagged ((msgdb modb-standard) flag)
-  (let (entry matched)
+  (let ((flags (case flag
+                (digest
+                 (nconc '(unread)(elmo-get-global-flags t t)))
+                (any
+                 (nconc '(unread answered)(elmo-get-global-flags t t)))))
+       entry matched)
     (case flag
       (read
        (dolist (number (modb-standard-number-list-internal msgdb))
         (unless (memq 'unread (modb-standard-message-flags msgdb number))
           (setq matched (cons number matched)))))
-      (digest
+      ((digest any)
        (mapatoms
        (lambda (atom)
          (setq entry (symbol-value atom))
-         (when (modb-standard-match-flags '(unread important)
-                                          (cdr entry))
-           (setq matched (cons (car entry) matched))))
-       (modb-standard-flag-map msgdb)))
-      (any
-       (mapatoms
-       (lambda (atom)
-         (setq entry (symbol-value atom))
-         (when (modb-standard-match-flags '(unread important answered)
-                                          (cdr entry))
+         (when (modb-standard-match-flags flags (cdr entry))
            (setq matched (cons (car entry) matched))))
        (modb-standard-flag-map msgdb)))
       (t
     (dolist (number numbers)
       (setq key (modb-standard-key number)
            entity (elmo-get-hash-val key entity-map))
-      ;; number-list
-      (setq number-list (delq number number-list))
-      ;; entity-map
-      (elmo-clear-hash-val key entity-map)
-      (elmo-clear-hash-val (modb-standard-entity-id entity) entity-map)
-      ;; flag-count (must be BEFORE flag-map)
-      (modb-standard-countup-flags
-       msgdb
-       (modb-standard-message-flags msgdb number)
-       -1)
-      ;; flag-map
-      (elmo-clear-hash-val key flag-map)
-      (modb-standard-set-message-modified msgdb number)
-      (modb-standard-set-flag-modified msgdb number))
+      (when entity
+       ;; number-list
+       (setq number-list (delq number number-list))
+       ;; entity-map
+       (elmo-clear-hash-val key entity-map)
+       (elmo-clear-hash-val (modb-standard-entity-id entity) entity-map)
+       ;; flag-count (must be BEFORE flag-map)
+       (modb-standard-countup-flags
+        msgdb
+        (modb-standard-message-flags msgdb number)
+        -1)
+       ;; flag-map
+       (elmo-clear-hash-val key flag-map)
+       (modb-standard-set-message-modified msgdb number)
+       (modb-standard-set-flag-modified msgdb number)))
     (modb-standard-set-number-list-internal msgdb number-list)
     (modb-standard-set-entity-map-internal msgdb entity-map)
-    (modb-standard-set-flag-map-internal msgdb flag-map)))
+    (modb-standard-set-flag-map-internal msgdb flag-map)
+    t))
 
 (luna-define-method elmo-msgdb-sort-entities ((msgdb modb-standard)
                                              predicate &optional app-data)
     (message "Sorting...done")
     msgdb))
 
-(luna-define-method elmo-msgdb-message-entity ((msgdb modb-standard) key)
-  (let ((ret (and key
-                 (elmo-get-hash-val
-                  (cond ((stringp key) key)
-                        ((numberp key) (modb-standard-key key)))
-                  (modb-standard-entity-map-internal msgdb)))))
-    (if (eq 'autoload (car-safe ret))
+(defun modb-standard-message-entity (msgdb key load)
+  (let ((ret (elmo-get-hash-val
+             key
+             (modb-standard-entity-map-internal msgdb))))
+    (if (and (eq 'autoload (car-safe ret)) load)
        (when modb-standard-divide-number
          (modb-standard-load-entity
           msgdb
           (elmo-msgdb-location msgdb)
           (/ (nth 1 ret) modb-standard-divide-number))
-         (elmo-get-hash-val
-          (cond ((stringp key) key)
-                ((numberp key) (modb-standard-key key)))
-          (modb-standard-entity-map-internal msgdb)))
+         (modb-standard-message-entity msgdb key nil))
       ret)))
 
+(luna-define-method elmo-msgdb-message-entity ((msgdb modb-standard) key)
+  (when key
+    (modb-standard-message-entity
+     msgdb
+     (cond ((stringp key) key)
+          ((numberp key) (modb-standard-key key)))
+     'autoload)))
+
 (require 'product)
 (product-provide (provide 'modb-standard) (require 'elmo-version))