X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Felmo-pop3.el;h=bf00c65edae8f04bb4303b58354a4b825180e822;hb=c2738fdc4e616fb55973a7e285432f60af6c1c57;hp=95234509582671b8b277ad5e3ea39fba36f6a42b;hpb=bd8c917787a2b1d4c2048b2a573dce7edfb7a700;p=elisp%2Fwanderlust.git diff --git a/elmo/elmo-pop3.el b/elmo/elmo-pop3.el index 9523450..bf00c65 100644 --- a/elmo/elmo-pop3.el +++ b/elmo/elmo-pop3.el @@ -696,33 +696,26 @@ If IF-EXISTS is `any-exists', get BIFF session or normal session if exists." (elmo-pop3-sort-msgdb-by-original-number folder (elmo-pop3-msgdb-create-by-header + folder process numlist flag-table (if (elmo-pop3-folder-use-uidl-internal folder) (elmo-pop3-folder-location-alist-internal folder))))))) -(defun elmo-pop3-sort-overview-by-original-number (overview loc-alist) - (if loc-alist - (sort overview - (lambda (ent1 ent2) - (< (elmo-pop3-uidl-to-number - (cdr (assq (elmo-msgdb-overview-entity-get-number ent1) - loc-alist))) - (elmo-pop3-uidl-to-number - (cdr (assq (elmo-msgdb-overview-entity-get-number ent2) - loc-alist)))))) - overview)) - (defun elmo-pop3-sort-msgdb-by-original-number (folder msgdb) - (message "Sorting...") - (let ((overview (elmo-msgdb-get-overview msgdb))) - (elmo-msgdb-set-overview - msgdb - (elmo-pop3-sort-overview-by-original-number - overview - (elmo-pop3-folder-location-alist-internal folder))) - (message "Sorting...done") + (let ((location-alist (elmo-pop3-folder-location-alist-internal folder))) + (when location-alist + (elmo-msgdb-sort-entities + msgdb + (lambda (ent1 ent2 loc-alist) + (< (elmo-pop3-uidl-to-number + (cdr (assq (elmo-msgdb-overview-entity-get-number ent1) + loc-alist))) + (elmo-pop3-uidl-to-number + (cdr (assq (elmo-msgdb-overview-entity-get-number ent2) + loc-alist))))) + location-alist)) msgdb)) (defun elmo-pop3-uidl-to-number (uidl) @@ -737,9 +730,9 @@ If IF-EXISTS is `any-exists', get BIFF session or normal session if exists." (elmo-get-hash-val (format "#%d" number) elmo-pop3-size-hash)) -(defun elmo-pop3-msgdb-create-by-header (process numlist - flag-table - loc-alist) +(defun elmo-pop3-msgdb-create-by-header (folder process numlist + flag-table + loc-alist) (let ((tmp-buffer (get-buffer-create " *ELMO Overview TMP*"))) (with-current-buffer (process-buffer process) (if loc-alist ; use uidl. @@ -754,6 +747,7 @@ If IF-EXISTS is `any-exists', get BIFF session or normal session if exists." tmp-buffer process numlist) (prog1 (elmo-pop3-msgdb-create-message + folder tmp-buffer process (length numlist) @@ -761,7 +755,8 @@ If IF-EXISTS is `any-exists', get BIFF session or normal session if exists." flag-table loc-alist) (kill-buffer tmp-buffer))))) -(defun elmo-pop3-msgdb-create-message (buffer +(defun elmo-pop3-msgdb-create-message (folder + buffer process num numlist @@ -769,7 +764,7 @@ If IF-EXISTS is `any-exists', get BIFF session or normal session if exists." loc-alist) (save-excursion (let ((new-msgdb (elmo-make-msgdb)) - beg entity i number message-id gmark) + beg entity i number message-id flags) (set-buffer buffer) (elmo-set-buffer-multibyte default-enable-multibyte-characters) (goto-char (point-min)) @@ -800,14 +795,10 @@ If IF-EXISTS is `any-exists', get BIFF session or normal session if exists." (elmo-msgdb-overview-entity-get-number entity)) loc-alist))) (elmo-msgdb-overview-entity-set-number entity number))) - (setq message-id (elmo-message-entity-field entity 'message-id)) - (setq gmark (or (elmo-msgdb-global-mark-get message-id) - (elmo-msgdb-mark - (elmo-flag-table-get flag-table message-id) - (elmo-file-cache-status - (elmo-file-cache-get message-id)) - 'new))) - (elmo-msgdb-append-entity new-msgdb entity gmark)))) + (setq message-id (elmo-message-entity-field entity 'message-id) + flags (elmo-flag-table-get flag-table message-id)) + (elmo-global-flags-set flags folder number message-id) + (elmo-msgdb-append-entity new-msgdb entity flags)))) (when (> num elmo-display-progress-threshold) (setq i (1+ i)) (if (or (zerop (% i 5)) (= i num))