X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Felmo-multi.el;h=d554abf06694974df418eb15e446983247598818;hb=8ec27cbd353823f4e7e6fa0480bc796f943067b6;hp=a4c23132aeb9e7ef412ed019e7c7cfdb8e449639;hpb=cb246ff21fd096ecd99541d93c437342a4cf5991;p=elisp%2Fwanderlust.git diff --git a/elmo/elmo-multi.el b/elmo/elmo-multi.el index a4c2313..d554abf 100644 --- a/elmo/elmo-multi.el +++ b/elmo/elmo-multi.el @@ -43,7 +43,7 @@ (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))) @@ -85,10 +85,12 @@ (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 @@ -129,6 +131,10 @@ (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))) @@ -168,6 +174,12 @@ (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))) @@ -177,6 +189,10 @@ (let ((pair (elmo-multi-real-folder-number folder number))) (elmo-message-mark (car pair) (cdr pair)))) +(luna-define-method elmo-message-flags ((folder elmo-multi-folder) number) + (let ((pair (elmo-multi-real-folder-number folder number))) + (elmo-message-flags (car pair) (cdr pair)))) + (defun elmo-multi-split-numbers (folder numlist &optional as-is) (let ((numbers (sort numlist '<)) (divider (elmo-multi-folder-divide-number-internal folder)) @@ -361,34 +377,28 @@ 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) @@ -515,6 +525,12 @@ (elmo-folder-list-flagged child flag in-msgdb))))) numbers)) +(luna-define-method elmo-folder-set-message-modified ((folder + elmo-multi-folder) + modified) + (dolist (child (elmo-multi-folder-children-internal folder)) + (elmo-folder-set-message-modified child modified))) + (luna-define-method elmo-folder-commit ((folder elmo-multi-folder)) (dolist (child (elmo-multi-folder-children-internal folder)) (elmo-folder-commit child)))