X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Felmo.el;h=d974213c5d090141520f064fbb10ba5f8b8a2fe8;hb=88d92346ec94d9f4c094659671c0c591c00d3bbd;hp=c56eddd10fb9f3abf7795c1385caec1c054e2410;hpb=081863a04cec8261ebd5c8628ad8055fab9e6fb7;p=elisp%2Fwanderlust.git diff --git a/elmo/elmo.el b/elmo/elmo.el index c56eddd..d974213 100644 --- a/elmo/elmo.el +++ b/elmo/elmo.el @@ -453,13 +453,22 @@ Return newly created temporary directory name which contains temporary files.") (luna-define-generic elmo-message-file-p (folder number) "Return t if message in the FOLDER with NUMBER is a file.") -(luna-define-generic elmo-message-flags (folder number) +(luna-define-generic elmo-message-flags (folder number &optional msgid) "Return a list of flags. FOLDER is a ELMO folder structure. -NUMBER is a number of the message.") - -(luna-define-method elmo-message-flags ((folder elmo-folder) number) - (elmo-msgdb-flags (elmo-folder-msgdb folder) number)) +NUMBER is a number of the message. +If optional argument MSGID is specified, +the message with NUMBER checks whether it has MSGID.") + +(luna-define-method elmo-message-flags ((folder elmo-folder) number + &optional msgid) + (if msgid + (let ((this-id (elmo-message-field folder number 'message-id))) + (and this-id + (string= this-id msgid) + (or (elmo-msgdb-flags (elmo-folder-msgdb folder) number) + '(read)))) + (elmo-msgdb-flags (elmo-folder-msgdb folder) number))) (defsubst elmo-message-flagged-p (folder number flag) "Return non-nil if the message is set FLAG. @@ -851,7 +860,7 @@ If optional argument IF-EXISTS is nil, load on demand. (elmo-folder-flag-table folder)) (elmo-folder-set-flag-table-internal folder nil)) -(defun elmo-folder-preserve-falgs (folder msgid flags) +(defun elmo-folder-preserve-flags (folder msgid flags) "Preserve FLAGS into FOLDER for a message that has MSGID." (when (and msgid flags) (let ((flag-table (elmo-folder-flag-table folder 'if-exists)) @@ -1008,7 +1017,7 @@ If optional argument IF-EXISTS is nil, load on demand. (defun elmo-generic-folder-append-messages (folder src-folder numbers same-number) (let ((src-msgdb-exists (not (zerop (elmo-folder-length src-folder)))) - unseen table flags + unseen table succeed-numbers failure cache id) (setq table (elmo-folder-flag-table folder)) (with-temp-buffer @@ -1017,9 +1026,7 @@ If optional argument IF-EXISTS is nil, load on demand. (setq failure nil id (and src-msgdb-exists (elmo-message-field src-folder (car numbers) - 'message-id)) - flags (or (elmo-message-flags src-folder (car numbers)) - (and id '(read)))) + 'message-id))) (condition-case nil (setq cache (elmo-file-cache-get id) failure @@ -1043,7 +1050,10 @@ If optional argument IF-EXISTS is nil, load on demand. (> (buffer-size) 0) (elmo-folder-append-buffer folder - flags + (elmo-message-flags + src-folder + (car numbers) + (elmo-msgdb-get-message-id-from-buffer)) (if same-number (car numbers)))))) (error (setq failure t))) ;; FETCH & APPEND finished