X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Felmo-multi.el;h=5903b1c495e17241f93050e7b08bb04331834cc8;hb=298179ef92e7400bdab05f509725ebfb9672b038;hp=ac108fe9eaab51334843893d86bf1c7e93b359e6;hpb=e46aa6dea08c2274db57bbb65d15bb5eca63a0bb;p=elisp%2Fwanderlust.git diff --git a/elmo/elmo-multi.el b/elmo/elmo-multi.el index ac108fe..5903b1c 100644 --- a/elmo/elmo-multi.el +++ b/elmo/elmo-multi.el @@ -154,6 +154,16 @@ (car pair) (elmo-message-entity (car pair) (cdr pair)) ignore-cache))) +(luna-define-method elmo-message-number ((folder elmo-multi-folder) + message-id) + (let ((children (elmo-multi-folder-children-internal folder)) + match) + (while children + (when (setq match (elmo-message-number (car children) message-id)) + (setq children nil)) + (setq children (cdr children))) + match)) + (luna-define-method elmo-message-entity ((folder elmo-multi-folder) key) (cond ((numberp key) @@ -190,10 +200,15 @@ (let ((pair (elmo-multi-real-folder-number folder number))) (elmo-message-field (car pair) (cdr pair) field))) -(luna-define-method elmo-message-flags ((folder elmo-multi-folder) number - &optional msgid) +(luna-define-method elmo-message-flag-available-p ((folder + elmo-multi-folder) number + flag) + (let ((pair (elmo-multi-real-folder-number folder number))) + (elmo-message-flag-available-p (car pair) (cdr pair) flag))) + +(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) msgid))) + (elmo-message-flags (car pair) (cdr pair)))) (defun elmo-multi-split-numbers (folder numlist &optional as-is) (let ((numbers (sort numlist '<)) @@ -404,14 +419,17 @@ 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))) + (elmo-folder-set-flag (car pair) (cdr pair) flag is-local)) + (elmo-folder-notify-event folder 'flag-changed numbers)) (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))) + (ignore-errors + (elmo-folder-unset-flag (car pair) (cdr pair) flag is-local))) + (elmo-folder-notify-event folder 'flag-changed numbers)) (luna-define-method elmo-folder-list-flagged ((folder elmo-multi-folder) flag