- numlist new-mark
- already-mark seen-mark
- important-mark
- seen-list)
- (let* (overview number-alist mark-alist entity
- i percent number length pair msgid gmark seen)
- (setq length (length numlist))
- (setq i 0)
- (message "Creating msgdb...")
- (while numlist
- (setq entity
- (elmo-shimbun-msgdb-create-entity
- folder (car numlist)))
- (when entity
- (setq overview
- (elmo-msgdb-append-element
- overview entity))
- (setq number (elmo-msgdb-overview-entity-get-number entity))
- (setq msgid (elmo-msgdb-overview-entity-get-id entity))
- (setq number-alist
- (elmo-msgdb-number-add number-alist
- number msgid))
- (setq seen (member msgid seen-list))
- (if (setq gmark (or (elmo-msgdb-global-mark-get msgid)
- (if (elmo-file-cache-status
- (elmo-file-cache-get msgid))
- (if seen nil already-mark)
- (if seen
- (if elmo-shimbun-use-cache
- seen-mark)
- new-mark))))
- (setq mark-alist
- (elmo-msgdb-mark-append mark-alist
- number gmark))))
- (when (> length elmo-display-progress-threshold)
- (setq i (1+ i))
- (setq percent (/ (* i 100) length))
- (elmo-display-progress
- 'elmo-folder-msgdb-create "Creating msgdb..."
- percent))
- (setq numlist (cdr numlist)))
- (message "Creating msgdb...done")
- (elmo-msgdb-sort-by-date
- (list overview number-alist mark-alist))))
+ numlist flag-table)
+ (let ((new-msgdb (elmo-make-msgdb))
+ entity msgid flags)
+ (elmo-with-progress-display (elmo-folder-msgdb-create (length numlist))
+ "Creating msgdb"
+ (dolist (number numlist)
+ (setq entity (elmo-shimbun-msgdb-create-entity folder number))
+ (when entity
+ (setq msgid (elmo-message-entity-field entity 'message-id)
+ flags (elmo-flag-table-get flag-table msgid))
+ (elmo-global-flags-set flags folder number msgid)
+ (elmo-msgdb-append-entity new-msgdb entity flags))
+ (elmo-progress-notify 'elmo-folder-msgdb-create)))
+ new-msgdb))