(defmacro elmo-multi-real-folder-number (folder number)
"Returns a cons cell of real FOLDER and NUMBER."
- (` (cons (nth (-
+ (` (cons (nth (-
(/ (, number)
(elmo-multi-folder-divide-number-internal (, folder)))
1) (elmo-multi-folder-children-internal (, folder)))
(elmo-folder-set-msgdb-internal fld nil)))
(luna-define-method elmo-folder-synchronize ((folder elmo-multi-folder)
- &optional ignore-msgdb
+ &optional
+ disable-killed
+ ignore-msgdb
no-check)
(dolist (fld (elmo-multi-folder-children-internal folder))
- (elmo-folder-synchronize fld ignore-msgdb no-check))
+ (elmo-folder-synchronize fld disable-killed ignore-msgdb no-check))
0)
(luna-define-method elmo-folder-expand-msgdb-path ((folder
elmo-msgdb-directory)))
(luna-define-method elmo-folder-newsgroups ((folder elmo-multi-folder))
- (delq nil
- (elmo-flatten
- (mapcar
- 'elmo-folder-newsgroups
- (elmo-flatten
- (mapcar
- 'elmo-folder-get-primitive-list
- (elmo-multi-folder-children-internal folder)))))))
+ (apply #'nconc
+ (mapcar
+ 'elmo-folder-newsgroups
+ (elmo-multi-folder-children-internal folder))))
(luna-define-method elmo-folder-get-primitive-list ((folder elmo-multi-folder))
(elmo-flatten
(nth (- (/ number (elmo-multi-folder-divide-number-internal folder)) 1)
(elmo-multi-folder-children-internal folder)))
+(luna-define-method elmo-message-cached-p ((folder elmo-multi-folder) number)
+ (let ((pair (elmo-multi-real-folder-number folder number)))
+ (elmo-message-cached-p (car pair) (cdr pair))))
+
(luna-define-method elmo-message-set-cached ((folder elmo-multi-folder)
number cached)
(let ((pair (elmo-multi-real-folder-number folder number)))
(setq children (cdr children)))
match))))
+(luna-define-method elmo-message-entity-parent ((folder
+ elmo-multi-folder) entity)
+ (elmo-message-entity
+ folder
+ (elmo-message-entity-field entity 'references)))
+
(luna-define-method elmo-message-field ((folder elmo-multi-folder)
number field)
(let ((pair (elmo-multi-real-folder-number folder number)))
(elmo-message-field (car pair) (cdr pair) field)))
-(luna-define-method elmo-message-mark ((folder elmo-multi-folder) number)
+(luna-define-method elmo-message-flags ((folder elmo-multi-folder) number)
(let ((pair (elmo-multi-real-folder-number folder number)))
- (elmo-message-mark (car pair) (cdr pair))))
+ (elmo-message-flags (car pair) (cdr pair))))
(defun elmo-multi-split-numbers (folder numlist &optional as-is)
(let ((numbers (sort numlist '<))
(cons news alls)
(list news unreads alls))))
-(luna-define-method elmo-folder-list-unreads ((folder elmo-multi-folder))
- (let ((cur-number 0)
- unreads)
- (dolist (child (elmo-multi-folder-children-internal folder))
- (setq cur-number (+ cur-number 1))
- (setq unreads
- (nconc
- unreads
- (mapcar (lambda (x)
- (+ x (* cur-number
- (elmo-multi-folder-divide-number-internal
- folder))))
- (elmo-folder-list-unreads child)))))
- unreads))
-
-(luna-define-method elmo-folder-list-answereds ((folder elmo-multi-folder))
- (let ((cur-number 0)
- answereds)
- (dolist (child (elmo-multi-folder-children-internal folder))
- (setq cur-number (+ cur-number 1))
- (setq answereds
- (nconc
- answereds
- (mapcar (lambda (x)
- (+ x (* cur-number
- (elmo-multi-folder-divide-number-internal
- folder))))
- (elmo-folder-list-answereds child)))))
- answereds))
-
-(luna-define-method elmo-folder-list-importants ((folder elmo-multi-folder))
- (let ((cur-number 0)
- importants)
- (dolist (child (elmo-multi-folder-children-internal folder))
- (setq cur-number (+ cur-number 1))
- (setq importants
- (nconc
- importants
- (mapcar (lambda (x)
- (+ x (* cur-number
- (elmo-multi-folder-divide-number-internal
- folder))))
- (elmo-folder-list-importants child)))))
- (elmo-uniq-list
- (nconc importants
- (elmo-folder-list-messages-with-global-mark
- folder elmo-msgdb-important-mark)))))
-
(luna-define-method elmo-folder-list-messages
((folder elmo-multi-folder) &optional visible-only in-msgdb)
(let* ((flds (elmo-multi-folder-children-internal folder))
t)))
(luna-define-method elmo-folder-search ((folder elmo-multi-folder)
- condition &optional numlist)
+ condition &optional numbers)
(let* ((flds (elmo-multi-folder-children-internal folder))
(cur-number 0)
- numlist-list cur-numlist ; for filtered search.
- ret-val)
- (if numlist
- (setq numlist-list
- (elmo-multi-split-numbers folder numlist t)))
+ numlist
+ matches)
+ (setq numbers (or numbers
+ (elmo-folder-list-messages folder)))
(while flds
(setq cur-number (+ cur-number 1))
- (when numlist
- (setq cur-numlist (car numlist-list)))
- (setq ret-val (append
- ret-val
- (elmo-list-filter
- cur-numlist
- (mapcar
- (function
- (lambda (x)
- (+
- (* (elmo-multi-folder-divide-number-internal
- folder) cur-number) x)))
- (elmo-folder-search
- (car flds) condition)))))
- (when numlist
- (setq numlist-list (cdr numlist-list)))
+ (setq matches (append matches
+ (mapcar
+ (function
+ (lambda (x)
+ (+
+ (* (elmo-multi-folder-divide-number-internal
+ folder)
+ cur-number)
+ x)))
+ (elmo-folder-search
+ (car flds) condition))))
(setq flds (cdr flds)))
- ret-val))
+ (elmo-list-filter numbers matches)))
(luna-define-method elmo-message-use-cache-p ((folder elmo-multi-folder)
number)
(setq msg-list (cdr msg-list)))
ret-val))
-(luna-define-method elmo-folder-mark-as-important ((folder
- elmo-multi-folder)
- numbers
- &optional
- ignore-flags)
- (dolist (folder-numbers (elmo-multi-make-folder-numbers-list folder numbers))
- (elmo-folder-mark-as-important (car folder-numbers)
- (cdr folder-numbers)
- ignore-flags)))
-
-(luna-define-method elmo-folder-unmark-important ((folder
- elmo-multi-folder)
- numbers
- &optional
- ignore-flags)
- (dolist (folder-numbers (elmo-multi-make-folder-numbers-list folder numbers))
- (elmo-folder-unmark-important (car folder-numbers)
- (cdr folder-numbers)
- ignore-flags)))
-
-(luna-define-method elmo-folder-mark-as-read ((folder
- elmo-multi-folder)
- numbers
- &optional ignore-flag)
- (dolist (folder-numbers (elmo-multi-make-folder-numbers-list folder numbers))
- (elmo-folder-mark-as-read (car folder-numbers)
- (cdr folder-numbers)
- ignore-flag)))
-
-(luna-define-method elmo-folder-unmark-read ((folder
- elmo-multi-folder)
- numbers
- &optional ignore-flag)
- (dolist (folder-numbers (elmo-multi-make-folder-numbers-list folder numbers))
- (elmo-folder-unmark-read (car folder-numbers)
- (cdr folder-numbers)
- ignore-flag)))
-
-(luna-define-method elmo-folder-mark-as-answered ((folder
- elmo-multi-folder)
- numbers)
- (dolist (folder-numbers (elmo-multi-make-folder-numbers-list folder numbers))
- (elmo-folder-mark-as-answered (car folder-numbers)
- (cdr folder-numbers))))
-
-(luna-define-method elmo-folder-unmark-answered ((folder
- elmo-multi-folder)
- numbers)
- (dolist (folder-numbers (elmo-multi-make-folder-numbers-list folder numbers))
- (elmo-folder-unmark-answered (car folder-numbers)
- (cdr folder-numbers))))
+(luna-define-method elmo-folder-set-flag ((folder elmo-multi-folder)
+ numbers
+ flag
+ &optional is-local)
+ (dolist (pair (elmo-multi-make-folder-numbers-list folder numbers))
+ (elmo-folder-set-flag (car pair) (cdr pair) flag is-local)))
+
+(luna-define-method elmo-folder-unset-flag ((folder elmo-multi-folder)
+ numbers
+ flag
+ &optional is-local)
+ (dolist (pair (elmo-multi-make-folder-numbers-list folder numbers))
+ (elmo-folder-unset-flag (car pair) (cdr pair) flag is-local)))
(luna-define-method elmo-folder-list-flagged ((folder elmo-multi-folder)
flag