* wl-summary.el (wl-summary-set-message-modified): No use
[elisp/wanderlust.git] / elmo / elmo.el
index 27751ef..09dc513 100644 (file)
@@ -106,8 +106,6 @@ If a folder name begins with PREFIX, use BACKEND."
                                     msgdb  ; msgdb (may be nil).
                                     killed-list  ; killed list.
                                     persistent   ; non-nil if persistent.
                                     msgdb  ; msgdb (may be nil).
                                     killed-list  ; killed list.
                                     persistent   ; non-nil if persistent.
-                                    message-modified ; message is modified.
-                                    flag-modified    ; flag is modified.
                                     process-duplicates  ; read or hide
                                     biff   ; folder for biff
                                     ))
                                     process-duplicates  ; read or hide
                                     biff   ; folder for biff
                                     ))
@@ -205,12 +203,6 @@ Return value is cons cell or list:
 (luna-define-generic elmo-folder-reserve-status-p (folder)
   "If non-nil, the folder should not close folder after `elmo-folder-status'.")
 
 (luna-define-generic elmo-folder-reserve-status-p (folder)
   "If non-nil, the folder should not close folder after `elmo-folder-status'.")
 
-(luna-define-generic elmo-folder-set-message-modified (folder modified)
-  "Set FOLDER as modified.")
-(luna-define-method elmo-folder-set-message-modified ((folder elmo-folder)
-                                                     modified)
-  (elmo-folder-set-message-modified-internal folder modified))
-
 (luna-define-generic elmo-folder-list-messages (folder &optional visible-only
                                                       in-msgdb)
   "Return a list of message numbers contained in FOLDER.
 (luna-define-generic elmo-folder-list-messages (folder &optional visible-only
                                                       in-msgdb)
   "Return a list of message numbers contained in FOLDER.
@@ -308,7 +300,9 @@ Otherwise, all descendent folders are returned.")
 (luna-define-generic elmo-folder-delete-messages (folder numbers)
   "Delete messages.
 FOLDER is the ELMO folder structure.
 (luna-define-generic elmo-folder-delete-messages (folder numbers)
   "Delete messages.
 FOLDER is the ELMO folder structure.
-NUMBERS is a list of message numbers to be deleted.")
+NUMBERS is a list of message numbers to be deleted.
+It is not recommended to use this function other than internal use.
+Use `elmo-folder-move-messages' with dst-folder 'null instead.")
 
 (luna-define-generic elmo-folder-search (folder condition &optional numbers)
   "Search and return list of message numbers.
 
 (luna-define-generic elmo-folder-search (folder condition &optional numbers)
   "Search and return list of message numbers.
@@ -496,9 +490,9 @@ Return newly created temporary directory name which contains temporary files.")
 (luna-define-method elmo-find-fetch-strategy
   ((folder elmo-folder) entity &optional ignore-cache)
   (let (cache-file size message-id number)
 (luna-define-method elmo-find-fetch-strategy
   ((folder elmo-folder) entity &optional ignore-cache)
   (let (cache-file size message-id number)
-    (setq size (elmo-msgdb-overview-entity-get-size entity))
-    (setq message-id (elmo-msgdb-overview-entity-get-id entity))
-    (setq number (elmo-msgdb-overview-entity-get-number entity))
+    (setq size (elmo-message-entity-field entity 'size))
+    (setq message-id (elmo-message-entity-field entity 'message-id))
+    (setq number (elmo-message-entity-number entity))
     (setq cache-file (elmo-file-cache-get message-id))
     (setq ignore-cache (or ignore-cache
                           (null (elmo-message-use-cache-p folder number))))
     (setq cache-file (elmo-file-cache-get message-id))
     (setq ignore-cache (or ignore-cache
                           (null (elmo-message-use-cache-p folder number))))
@@ -670,8 +664,6 @@ Return a cons cell of (NUMBER-CROSSPOSTS . NEW-FLAG-ALIST).")
        (elmo-msgdb-killed-list-save
         (elmo-folder-msgdb-path folder)
         (elmo-folder-killed-list-internal folder)))
        (elmo-msgdb-killed-list-save
         (elmo-folder-msgdb-path folder)
         (elmo-folder-killed-list-internal folder)))
-      (elmo-folder-set-message-modified folder nil)
-      (elmo-folder-set-flag-modified-internal folder nil)
       (elmo-msgdb-save msgdb))))
 
 (luna-define-method elmo-folder-close-internal ((folder elmo-folder))
       (elmo-msgdb-save msgdb))))
 
 (luna-define-method elmo-folder-close-internal ((folder elmo-folder))
@@ -1069,7 +1061,8 @@ NUMBERS is a list of message numbers, messages are searched from the list."
            (if (and (elmo-folder-delete-messages src-folder succeeds)
                     (elmo-folder-detach-messages src-folder succeeds))
                (progn
            (if (and (elmo-folder-delete-messages src-folder succeeds)
                     (elmo-folder-detach-messages src-folder succeeds))
                (progn
-                 (elmo-global-flag-detach-messages src-folder succeeds)
+                 (elmo-global-flag-detach-messages
+                  src-folder succeeds (eq dst-folder 'null))
                  (setq result t))
              (message "move: delete messages from %s failed."
                       (elmo-folder-name-internal src-folder))
                  (setq result t))
              (message "move: delete messages from %s failed."
                       (elmo-folder-name-internal src-folder))
@@ -1118,11 +1111,8 @@ If CACHED is t, message is set as cached.")
     (elmo-msgdb-unset-flag (elmo-folder-msgdb folder) number 'cached)))
 
 (defun elmo-message-copy-entity (entity)
     (elmo-msgdb-unset-flag (elmo-folder-msgdb folder) number 'cached)))
 
 (defun elmo-message-copy-entity (entity)
-  ;; 
-  (elmo-msgdb-copy-overview-entity entity))
-
-(defun elmo-message-entity-set-number (entity number)
-  (elmo-msgdb-overview-entity-set-number entity number))
+  (elmo-msgdb-copy-message-entity (elmo-message-entity-handler entity)
+                                 entity))
 
 (luna-define-generic elmo-message-entity (folder key)
   "Return the message-entity structure which matches to the KEY.
 
 (luna-define-generic elmo-message-entity (folder key)
   "Return the message-entity structure which matches to the KEY.
@@ -1159,21 +1149,31 @@ ENTITY is the message-entity to get the parent.")
      ,@form))
 
 (defmacro elmo-message-entity-number (entity)
      ,@form))
 
 (defmacro elmo-message-entity-number (entity)
-  `(elmo-msgdb-overview-entity-get-number ,entity))
+  `(elmo-msgdb-message-entity-number (elmo-message-entity-handler ,entity)
+                                    ,entity))
+
+(defmacro elmo-message-entity-set-number (entity number)
+  `(elmo-msgdb-message-entity-set-number (elmo-message-entity-handler ,entity)
+                                        ,entity
+                                        ,number))
 
 (defun elmo-message-entity-field (entity field &optional decode)
   "Get message entity field value.
 ENTITY is the message entity structure obtained by `elmo-message-entity'.
 FIELD is the symbol of the field name.
 if optional DECODE is non-nil, returned value is decoded."
 
 (defun elmo-message-entity-field (entity field &optional decode)
   "Get message entity field value.
 ENTITY is the message entity structure obtained by `elmo-message-entity'.
 FIELD is the symbol of the field name.
 if optional DECODE is non-nil, returned value is decoded."
-  (elmo-msgdb-message-entity-field entity field decode))
+  (elmo-msgdb-message-entity-field
+   (elmo-message-entity-handler entity)
+   entity field decode))
 
 (defun elmo-message-entity-set-field (entity field value)
   "Set message entity field value.
 ENTITY is the message entity structure.
 FIELD is the symbol of the field name.
 VALUE is the field value (raw)."
 
 (defun elmo-message-entity-set-field (entity field value)
   "Set message entity field value.
 ENTITY is the message entity structure.
 FIELD is the symbol of the field name.
 VALUE is the field value (raw)."
-  (elmo-msgdb-message-entity-set-field entity field value))
+  (elmo-msgdb-message-entity-set-field
+   (elmo-message-entity-handler entity)
+   entity field value))
 
 (luna-define-generic elmo-folder-count-flags (folder)
   "Count flagged message number in the msgdb of the FOLDER.
 
 (luna-define-generic elmo-folder-count-flags (folder)
   "Count flagged message number in the msgdb of the FOLDER.
@@ -1269,7 +1269,7 @@ FIELD is a symbol of the field.")
 (luna-define-method elmo-message-field ((folder elmo-folder) number field)
   (when (zerop (elmo-folder-length folder))
     (error "Cannot treat this folder correctly."))
 (luna-define-method elmo-message-field ((folder elmo-folder) number field)
   (when (zerop (elmo-folder-length folder))
     (error "Cannot treat this folder correctly."))
-  (elmo-msgdb-get-field (elmo-folder-msgdb folder) number field))
+  (elmo-message-entity-field (elmo-message-entity folder number) field))
 
 (luna-define-method elmo-message-use-cache-p ((folder elmo-folder) number)
   nil) ; default is not use cache.
 
 (luna-define-method elmo-message-use-cache-p ((folder elmo-folder) number)
   nil) ; default is not use cache.
@@ -1475,7 +1475,11 @@ FIELD is a symbol of the field.")
                                       &optional keep-killed)
   (unless keep-killed
     (elmo-folder-set-killed-list-internal folder nil))
                                       &optional keep-killed)
   (unless keep-killed
     (elmo-folder-set-killed-list-internal folder nil))
-  (elmo-msgdb-clear (elmo-folder-msgdb folder)))
+  (if (eq elmo-msgdb-convert-type 'sync)
+      (elmo-folder-set-msgdb-internal
+       folder
+       (elmo-make-msgdb (elmo-folder-msgdb-path folder)))
+    (elmo-msgdb-clear (elmo-folder-msgdb folder))))
 
 (luna-define-generic elmo-folder-synchronize (folder
                                              &optional
 
 (luna-define-generic elmo-folder-synchronize (folder
                                              &optional
@@ -1550,9 +1554,7 @@ If update process is interrupted, return nil.")
              (setq crossed (elmo-folder-append-msgdb folder new-msgdb))
              ;; process crosspost.
              ;; Return a cons cell of (NUMBER-CROSSPOSTS . NEW-FLAG-ALIST).
              (setq crossed (elmo-folder-append-msgdb folder new-msgdb))
              ;; process crosspost.
              ;; Return a cons cell of (NUMBER-CROSSPOSTS . NEW-FLAG-ALIST).
-             (elmo-folder-process-crosspost folder)
-             (elmo-folder-set-message-modified folder t)
-             (elmo-folder-set-flag-modified-internal folder t))
+             (elmo-folder-process-crosspost folder))
            ;; return value.
            (or crossed 0)))
       (quit
            ;; return value.
            (or crossed 0)))
       (quit