;;; 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)
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))
(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)))
-(luna-define-method elmo-folder-append-messages ((folder elmo-flag-folder)
- src-folder
- numbers
- &optional same-number)
- (dolist (number numbers)
- (elmo-global-flag-set (elmo-flag-folder-flag-internal folder)
- src-folder number (elmo-message-field
- src-folder
- number
- 'message-id)))
- (elmo-folder-set-flag src-folder
- numbers
- (elmo-flag-folder-flag-internal folder))
+(defun elmo-folder-append-messages-*-flag (dst-folder
+ src-folder
+ numbers
+ same-number)
+ (let ((flag (elmo-flag-folder-flag-internal dst-folder)))
+ (dolist (number numbers)
+ (elmo-global-flag-set flag src-folder number
+ (elmo-message-field
+ src-folder number 'message-id)))
+ (elmo-folder-set-flag src-folder numbers flag))
numbers)
(luna-define-method elmo-folder-append-buffer ((folder elmo-flag-folder)
(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
(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