X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Felmo-flag.el;h=b7e4e7163cb903913e3b50d093f2c39796171a16;hb=93025ed9d6792ef40793910e2a2b7ac46029b5cb;hp=8f71c94d90520a2d8d934320aa16bca6101673b8;hpb=c869501fc881f10421f2192f1499153de31771a1;p=elisp%2Fwanderlust.git diff --git a/elmo/elmo-flag.el b/elmo/elmo-flag.el index 8f71c94..b7e4e71 100644 --- a/elmo/elmo-flag.el +++ b/elmo/elmo-flag.el @@ -25,11 +25,12 @@ ;;; Commentary: ;; + +;;; Code: (require 'elmo-util) (require 'elmo-localdir) (eval-when-compile (require 'cl)) -;;; Code: (defcustom elmo-global-flags '(important) "A list of flag symbol which is managed globally by the flag folder." :type '(repeat symbol) @@ -124,7 +125,8 @@ elmo-flag-folder)) (elmo-object-save (expand-file-name ".minfo" (elmo-folder-msgdb-path folder)) - (elmo-flag-folder-minfo-internal folder)) + (elmo-flag-folder-minfo-internal folder) + elmo-mime-charset) (if (elmo-flag-folder-max-number-internal folder) (elmo-object-save (expand-file-name "max" (elmo-folder-msgdb-path folder)) @@ -186,22 +188,15 @@ (when numbers (let ((dir (elmo-localdir-folder-directory-internal folder)) (new-msgdb (elmo-make-msgdb)) - entity (i 0) - (len (length numbers))) - (message "Creating msgdb...") - (while numbers - (when (setq entity (elmo-localdir-msgdb-create-entity - new-msgdb dir (car numbers))) - (elmo-msgdb-append-entity new-msgdb entity - (list (elmo-flag-folder-flag-internal - folder)))) - (when (> len elmo-display-progress-threshold) - (setq i (1+ i)) - (elmo-display-progress - 'elmo-flag-folder-msgdb-create "Creating msgdb..." - (/ (* i 100) len))) - (setq numbers (cdr numbers))) - (message "Creating msgdb...done") + (flags (list (elmo-flag-folder-flag-internal folder))) + entity) + (elmo-with-progress-display (elmo-folder-msgdb-create (length numbers)) + "Creating msgdb" + (dolist (number numbers) + (when (setq entity (elmo-localdir-msgdb-create-entity + new-msgdb dir number)) + (elmo-msgdb-append-entity new-msgdb entity flags)) + (elmo-progress-notify 'elmo-folder-msgdb-create))) new-msgdb))) (defun elmo-folder-append-messages-*-flag (dst-folder @@ -299,7 +294,7 @@ NUMBER is the message number." (error "Cannot treat `%s' as global flag" flag)) (when message-id (let ((flag-folder (elmo-flag-get-folder flag)) - cache new-file new-number elem) + filename cache new-file new-number elem) (if (setq elem (elmo-get-hash-val message-id (elmo-flag-folder-minfo-hash-internal @@ -331,16 +326,18 @@ NUMBER is the message number." (setq new-number (elmo-flag-folder-max-number-internal flag-folder))) (elmo-localdir-folder-directory-internal flag-folder))) - (with-temp-buffer - (setq cache (and message-id (elmo-file-cache-get message-id))) - (if (and cache (eq (elmo-file-cache-status cache) 'entire)) - (elmo-copy-file (elmo-file-cache-path cache) - new-file) - (when (and folder number) - (elmo-message-fetch folder number - (elmo-make-fetch-strategy 'entire)) - (write-region-as-binary (point-min) (point-max) new-file nil - 'no-msg)))) + (cond + ((setq filename (elmo-message-file-name folder number)) + (elmo-copy-file filename new-file)) + ((and (setq cache (elmo-file-cache-get message-id)) + (eq (elmo-file-cache-status cache) 'entire)) + (elmo-copy-file (elmo-file-cache-path cache) new-file)) + (t + (with-temp-buffer + (elmo-message-fetch folder number + (elmo-make-fetch-strategy 'entire)) + (write-region-as-binary (point-min) (point-max) new-file nil + 'no-msg)))) (elmo-flag-folder-set-minfo-internal flag-folder (cons