X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Felmo-multi.el;h=d03b1f62aea86c1c7638ad465027946e8c066be3;hb=cc2476c59df7c01510dff6fb30c8e981183f2ccc;hp=479c474a7ccdfe1daef8e9d85af44e5ea2884cf8;hpb=b7c5891531a0e381fb625601b1cbf0e59721fa6c;p=elisp%2Fwanderlust.git diff --git a/elmo/elmo-multi.el b/elmo/elmo-multi.el index 479c474..d03b1f6 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 @@ -235,27 +237,30 @@ (setq cur-number (+ 1 cur-number))) t)) -(luna-define-method elmo-folder-diff ((folder elmo-multi-folder) - &optional numbers) - (elmo-multi-folder-diff folder numbers)) +(luna-define-method elmo-folder-diff ((folder elmo-multi-folder)) + (elmo-multi-folder-diff folder)) -(defun elmo-multi-folder-diff (folder numbers) +(defun elmo-multi-folder-diff (folder) (let ((flds (elmo-multi-folder-children-internal folder)) - (num-list (and numbers (elmo-multi-split-numbers folder numbers))) - (unsync 0) - (messages 0) - diffs) + (news 0) + (unreads 0) + (alls 0) + no-unreads diff) (while flds - (setq diffs (nconc diffs (list (elmo-folder-diff (car flds) - (car num-list))))) + (setq diff (elmo-folder-diff (car flds))) + (cond + ((consp (cdr diff)) ; (new unread all) + (setq news (+ news (nth 0 diff)) + unreads (+ unreads (nth 1 diff)) + alls (+ alls (nth 2 diff)))) + (t + (setq no-unreads t) + (setq news (+ news (car diff)) + alls (+ alls (cdr diff))))) (setq flds (cdr flds))) - (while diffs - (and (car (car diffs)) - (setq unsync (+ unsync (car (car diffs))))) - (setq messages (+ messages (cdr (car diffs)))) - (setq diffs (cdr diffs))) - (elmo-folder-set-info-hashtb folder nil messages) - (cons unsync messages))) + (if no-unreads + (cons news alls) + (list news unreads alls)))) (luna-define-method elmo-folder-list-unreads ((folder elmo-multi-folder)) (let ((cur-number 0) @@ -369,10 +374,7 @@ (while flds (setq cur-number (+ cur-number 1)) (when numlist - (setq cur-numlist (car numlist-list)) - (if (null cur-numlist) - ;; t means filter all. - (setq cur-numlist t))) + (setq cur-numlist (car numlist-list))) (setq ret-val (append ret-val (elmo-list-filter @@ -515,6 +517,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)))