X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Felmo.el;h=09dc51379a071debb7e60c793e0f72dee2275d98;hb=c1e70a9ddc4f3c6a051665cc9d6c0bb27c263bc2;hp=27751efd410de5cc0da209b8ec78a9767b4934af;hpb=c2738fdc4e616fb55973a7e285432f60af6c1c57;p=elisp%2Fwanderlust.git diff --git a/elmo/elmo.el b/elmo/elmo.el index 27751ef..09dc513 100644 --- a/elmo/elmo.el +++ b/elmo/elmo.el @@ -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. - message-modified ; message is modified. - flag-modified ; flag is modified. 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-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. @@ -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. -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. @@ -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) - (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)))) @@ -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-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)) @@ -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 - (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)) @@ -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-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. @@ -1159,21 +1149,31 @@ ENTITY is the message-entity to get the parent.") ,@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." - (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)." - (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. @@ -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.")) - (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. @@ -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)) - (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 @@ -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). - (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