Call wl-summary-set-mark-modified.
(wl-summary-delete-messages-on-buffer): Call
wl-folder-set-folder-updated instead of wl-folder-update-unread.
(wl-summary-sync-update): Call elmo-folder-length instead of
elmo-folder-messages.
(wl-summary-insert-headers): Don't call
elmo-folder-list-message-entities.
* elmo.el (elmo-folder-list-message-entities): Define as inline function.
(elmo-folder-messages): Abolish.
* elmo-multi.el (elmo-folder-check): Call elmo-folder-check for each folder.
(elmo-folder-synchronize): Define.
(elmo-message-entity): Define.
+2003-07-17  Yuuichi Teranishi  <teranisi@gohome.org>
+
+       * elmo.el (elmo-folder-list-message-entities): Define as inline
+       function.
+       (elmo-folder-messages): Abolish.
+
+       * elmo-multi.el (elmo-folder-check): Call elmo-folder-check for each
+       folder.
+       (elmo-folder-synchronize): Define.
+       (elmo-message-entity): Define.
+
 2003-07-16  Yuuichi Teranishi  <teranisi@gohome.org>
 
        * elmo-imap4.el (elmo-folder-delete-messages-plugged): Call
 
 
 (luna-define-method elmo-folder-check ((folder elmo-multi-folder))
   (dolist (fld (elmo-multi-folder-children-internal folder))
-    (elmo-folder-synchronize fld)))
+    (elmo-folder-check fld)))
 
 (luna-define-method elmo-folder-close-internal ((folder elmo-multi-folder))
   (dolist (fld (elmo-multi-folder-children-internal folder))
   (dolist (fld (elmo-multi-folder-children-internal folder))
     (elmo-folder-set-msgdb-internal fld nil)))
 
+(luna-define-method elmo-folder-synchronize ((folder elmo-multi-folder)
+                                            &optional ignore-msgdb
+                                            no-check)
+  (dolist (fld (elmo-multi-folder-children-internal folder))
+    (elmo-folder-synchronize fld ignore-msgdb no-check)))
+
 (luna-define-method elmo-folder-expand-msgdb-path ((folder
                                                    elmo-multi-folder))
   (expand-file-name (elmo-replace-string-as-filename
   (nth (- (/ number (elmo-multi-folder-divide-number-internal folder)) 1)
        (elmo-multi-folder-children-internal folder)))
 
+(luna-define-method elmo-message-entity ((folder elmo-folder) key)
+  (cond
+   ((numberp key)
+    (elmo-msgdb-message-entity (elmo-folder-msgdb
+                               (elmo-message-folder folder key))
+                              key))
+   ((stringp key)
+    (let ((children (elmo-multi-folder-children-internal folder))
+         match)
+      (while children
+       (when (setq match (elmo-message-entity (car children) key))
+         (setq children nil))
+       (setq children (cdr children)))
+      match))))
+
 (defun elmo-multi-msgdb (msgdb base)
   (list (mapcar (function
                 (lambda (x)
 
          (elmo-folder-close dst-folder)))
       (if (and (not no-delete) succeeds)
          (progn
-           ;;(if (not no-delete-info)
-           ;;(message "Cleaning up src folder..."))
            (if (and (elmo-folder-delete-messages src-folder succeeds)
                     (elmo-msgdb-delete-msgs
                      (elmo-folder-msgdb src-folder) succeeds))
              (message "move: delete messages from %s failed."
                       (elmo-folder-name-internal src-folder))
              (setq result nil))
-           ;;(if (and result
-           ;;(not no-delete-info))
-           ;;(message "Cleaning up src folder...done"))
            result)
        (if no-delete
            (progn
                               (elmo-message-use-cache-p folder number))
     (elmo-folder-set-mark-modified-internal folder t)))
 
-(luna-define-generic elmo-folder-list-message-entities (folder
-                                                       &optional numbers
-                                                       in-msgdb)
-  "List message-entity structure of FOLDER.
-If optional NUMBERS is specified, only the corresponding entities are
-retrieved.
-If second optional IN-MSGDB is specified, only entities in the msgdb are
-retreived (don't retrieve entities from folder).")
-
-(luna-define-method elmo-folder-list-message-entities ((folder elmo-folder)
-                                                      &optional numbers
-                                                      in-msgdb)
-  (if numbers
-      (mapcar (lambda (x) (elmo-message-entity folder x)) numbers)
-    (elmo-msgdb-get-overview (elmo-folder-msgdb folder))))
-
 (luna-define-generic elmo-message-entity (folder key)
   "Return the message-entity structure which matches to the KEY.
 KEY is a number or a string.
 (def-edebug-spec elmo-folder-do-each-message-entity
   ((symbolp form &rest form) &rest form))
 
+(defsubst elmo-folder-list-message-entities (folder)
+  ;; List all message entities in the FOLDER.
+  (mapcar
+   (lambda (number) (elmo-message-entity folder number))
+   (elmo-folder-list-messages folder t t)))
+
 (defmacro elmo-folder-do-each-message-entity (spec &rest form)
   "Iterator for message entity in the folder.
 \(elmo-folder-do-each-message-entity \(entity folder\)
        (elmo-folder-set-killed-list-internal folder killed-list)
        nil))))
 
-(defun elmo-folder-messages (folder)
-  "Return number of messages in the FOLDER."
-  (length
-   (elmo-msgdb-get-number-alist
-    (elmo-folder-msgdb folder))))
-
 (luna-define-generic elmo-folder-length (folder)
   "Return number of messages in the FOLDER.")
 
 
+2003-07-17  Yuuichi Teranishi  <teranisi@gohome.org>
+
+       * wl-summary.el (wl-summary-set-message-modified): 
+       Call wl-summary-set-mark-modified.
+       (wl-summary-delete-messages-on-buffer): Call
+       wl-folder-set-folder-updated instead of wl-folder-update-unread.
+       (wl-summary-sync-update): Call elmo-folder-length instead of
+       elmo-folder-messages.
+       (wl-summary-insert-headers): Don't call
+       elmo-folder-list-message-entities.
+
 2003-07-17  Hiroya Murata  <lapis-lazuli@pop06.odn.ne.jp>
 
        * wl-action.el (wl-summary-define-mark-action): Call
 
 (defun wl-summary-set-message-modified ()
   (elmo-folder-set-message-modified-internal
    wl-summary-buffer-elmo-folder t)
-  (setq wl-summary-buffer-message-modified t))
+  (setq wl-summary-buffer-message-modified t)
+  (wl-summary-set-mark-modified))
 (defun wl-summary-message-modified-p ()
   wl-summary-buffer-message-modified)
 (defun wl-summary-set-mark-modified ()
       ;;(message (concat deleting-info "done"))
       (wl-summary-count-unread)
       (wl-summary-update-modeline)
-      (wl-folder-update-unread
-       (wl-summary-buffer-folder-name)
-       (+ wl-summary-buffer-unread-count wl-summary-buffer-new-count)))))
+      (wl-folder-set-folder-updated
+       (elmo-folder-name-internal wl-summary-buffer-elmo-folder)
+       (list 0
+            (+ wl-summary-buffer-unread-count wl-summary-buffer-new-count)
+            (elmo-folder-length wl-summary-buffer-elmo-folder))))))
 
 (defun wl-summary-replace-status-marks (before after)
   "Replace the status marks on buffer."
        (list 0
             (let ((lst (wl-summary-count-unread)))
               (+ (car lst) (nth 1 lst)))
-            (elmo-folder-messages folder)))
+            (elmo-folder-length folder)))
       (wl-summary-update-modeline)
       ;;
       (unless unset-cursor
                        wl-summary-alike-hashtb)))
 
 (defun wl-summary-insert-headers (folder func mime-decode)
-  (let ((entities (elmo-folder-list-message-entities folder nil t))
+  (let ((numbers (elmo-folder-list-messages folder t t))
        ov this last alike)
     (buffer-disable-undo (current-buffer))
     (make-local-variable 'wl-summary-alike-hashtb)
-    (setq wl-summary-alike-hashtb (elmo-make-hash (* (length entities) 2)))
+    (setq wl-summary-alike-hashtb (elmo-make-hash (* (length numbers) 2)))
     (when mime-decode
       (elmo-set-buffer-multibyte default-enable-multibyte-characters))
-    (while (setq ov (pop entities))
+    (while (setq ov (elmo-message-entity folder (pop numbers)))
       (setq this (funcall func ov))
       (and this (setq this (std11-unfold-string this)))
       (if (equal last this)