(defmacro elmo-multi-real-folder-number (folder number)
"Returns a cons cell of real FOLDER and NUMBER."
- (` (cons (nth (-
- (/ (, number)
- (elmo-multi-folder-divide-number-internal (, folder)))
- 1) (elmo-multi-folder-children-internal (, folder)))
- (% (, number) (elmo-multi-folder-divide-number-internal
- (, folder))))))
+ `(cons (nth (-
+ (/ ,number
+ (elmo-multi-folder-divide-number-internal ,folder))
+ 1) (elmo-multi-folder-children-internal ,folder))
+ (% ,number (elmo-multi-folder-divide-number-internal
+ ,folder))))
(luna-define-method elmo-folder-initialize ((folder
elmo-multi-folder)
(dolist (fld (elmo-multi-folder-children-internal folder))
(elmo-folder-open-internal fld)))
+(luna-define-method elmo-folder-open-internal-p ((folder elmo-multi-folder))
+ (let (open)
+ (dolist (fld (elmo-multi-folder-children-internal folder))
+ (setq open (and open (elmo-folder-open-internal-p fld))))))
+
(luna-define-method elmo-folder-check ((folder elmo-multi-folder))
(dolist (fld (elmo-multi-folder-children-internal folder))
(elmo-folder-check fld)))
(nconc
numbers
(mapcar
- (function
- (lambda (x)
- (+
- (* (elmo-multi-folder-divide-number-internal
- folder) cur-number) x)))
+ (lambda (x)
+ (+
+ (* (elmo-multi-folder-divide-number-internal
+ folder) cur-number) x))
list)))
(setq flds (cdr flds)))
numbers))
(setq cur-number (+ cur-number 1))
(setq matches (append matches
(mapcar
- (function
- (lambda (x)
- (+
- (* (elmo-multi-folder-divide-number-internal
- folder)
- cur-number)
- x)))
+ (lambda (x)
+ (+
+ (* (elmo-multi-folder-divide-number-internal
+ folder)
+ cur-number)
+ x))
(elmo-folder-search
(car flds) condition))))
(setq flds (cdr flds)))
(nconc
numbers
(mapcar
- (function
- (lambda (x)
- (+
- (* (elmo-multi-folder-divide-number-internal folder)
- cur-number) x)))
+ (lambda (x)
+ (+
+ (* (elmo-multi-folder-divide-number-internal folder)
+ cur-number) x))
(elmo-folder-list-flagged child flag in-msgdb)))))
numbers))
(when (cdr element)
(elmo-folder-recover-messages (car element) (cdr element)))))
+(defun elmo-folder-append-messages-multi-* (dst-folder
+ src-folder
+ numbers
+ same-number)
+ (if same-number
+ (elmo-folder-append-messages dst-folder src-folder numbers same-number
+ 'elmo-folder-append-messages-multi-*)
+ (let ((divider (elmo-multi-folder-divide-number-internal src-folder))
+ (cur-number 0)
+ succeeds)
+ (dolist (element (elmo-multi-split-numbers src-folder numbers))
+ (setq cur-number (+ cur-number 1))
+ (when (cdr element)
+ (setq succeeds
+ (nconc
+ succeeds
+ (mapcar
+ (lambda (x)
+ (+ (* divider cur-number) x))
+ (elmo-folder-append-messages
+ dst-folder (car element) (cdr element)))))))
+ succeeds)))
+
(require 'product)
(product-provide (provide 'elmo-multi) (require 'elmo-version))