X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Felmo-filter.el;h=2e0e7ecf59e40a819c62c6100b83fe7375743dac;hb=0e5efb8f0af32ab5f97c97256c464c80b59a7269;hp=1293f4b0035115fa65f8638e7d32691bad97db14;hpb=d9e2a1d256315bb9d148e2d1996f0c8c693d1d84;p=elisp%2Fwanderlust.git diff --git a/elmo/elmo-filter.el b/elmo/elmo-filter.el index 1293f4b..2e0e7ec 100644 --- a/elmo/elmo-filter.el +++ b/elmo/elmo-filter.el @@ -77,14 +77,6 @@ (elmo-folder-set-msgdb-internal (elmo-filter-folder-target-internal folder) nil))) -(luna-define-method elmo-folder-set-message-modified ((folder - elmo-filter-folder) - modified) - (if (elmo-filter-folder-require-msgdb-internal folder) - (elmo-folder-set-message-modified-internal - (elmo-filter-folder-target-internal folder) modified) - (elmo-folder-set-message-modified-internal folder modified))) - (luna-define-method elmo-folder-commit :around ((folder elmo-filter-folder)) ;; Save target msgdb if it is used. (if (elmo-filter-folder-require-msgdb-internal folder) @@ -97,6 +89,12 @@ (elmo-replace-string-as-filename (elmo-folder-name-internal folder)) (expand-file-name "filter" elmo-msgdb-directory))) +(luna-define-method elmo-folder-search-requires-msgdb-p ((folder + elmo-filter-folder) + condition) + (elmo-folder-search-requires-msgdb-p + (elmo-filter-folder-target-internal folder) condition)) + (luna-define-method elmo-folder-newsgroups ((folder elmo-filter-folder)) (elmo-folder-newsgroups (elmo-filter-folder-target-internal folder))) @@ -108,7 +106,7 @@ (luna-define-method elmo-folder-get-primitive-list ((folder elmo-filter-folder)) - (list (elmo-filter-folder-target-internal folder))) + (elmo-folder-get-primitive-list (elmo-filter-folder-target-internal folder))) (luna-define-method elmo-folder-contains-type ((folder elmo-filter-folder) type) @@ -121,7 +119,9 @@ (if (elmo-filter-folder-require-msgdb-internal folder) (let* ((target-folder (elmo-filter-folder-target-internal folder)) (len (length numlist)) - (msgdb (elmo-folder-msgdb target-folder)) + (msgdb (progn + (elmo-folder-check target-folder) + (elmo-folder-msgdb target-folder))) (new-msgdb (elmo-make-msgdb)) message-id entity) (when (> len elmo-display-progress-threshold) @@ -129,7 +129,7 @@ len "Creating msgdb...")) (unwind-protect (dolist (number numlist) - (setq entity (elmo-msgdb-overview-get-entity number msgdb)) + (setq entity (elmo-msgdb-message-entity msgdb number)) (when entity (elmo-msgdb-append-entity new-msgdb entity (elmo-msgdb-flags msgdb number))) @@ -251,11 +251,13 @@ (luna-define-method elmo-folder-search ((folder elmo-filter-folder) condition &optional numbers) ;; search from messages in this folder - (elmo-list-filter - numbers - (elmo-folder-search (elmo-filter-folder-target-internal folder) - condition - (elmo-folder-list-messages folder)))) + (let ((result (elmo-folder-search + (elmo-filter-folder-target-internal folder) + condition + (elmo-folder-list-messages folder)))) + (if numbers + (elmo-list-filter numbers result) + result))) (luna-define-method elmo-message-use-cache-p ((folder elmo-filter-folder) number) @@ -278,53 +280,57 @@ (elmo-message-file-name (elmo-filter-folder-target-internal folder) number)) -(luna-define-method elmo-folder-mark-as-read :around ((folder +(luna-define-method elmo-folder-flag-as-read :around ((folder elmo-filter-folder) numbers - &optional ignore-flag) - (elmo-folder-mark-as-read (elmo-filter-folder-target-internal folder) - numbers ignore-flag) + &optional is-local) + (elmo-folder-flag-as-read (elmo-filter-folder-target-internal folder) + numbers is-local) (luna-call-next-method)) -(luna-define-method elmo-folder-unmark-read :around ((folder +(luna-define-method elmo-folder-unflag-read :around ((folder elmo-filter-folder) numbers - &optional ignore-flag) - (elmo-folder-unmark-read (elmo-filter-folder-target-internal folder) - numbers ignore-flag) + &optional is-local) + (elmo-folder-unflag-read (elmo-filter-folder-target-internal folder) + numbers is-local) (luna-call-next-method)) -(luna-define-method elmo-folder-mark-as-important :around ((folder +(luna-define-method elmo-folder-flag-as-important :around ((folder elmo-filter-folder) numbers &optional - ignore-flag) - (elmo-folder-mark-as-important (elmo-filter-folder-target-internal folder) - numbers ignore-flag) + is-local) + (elmo-folder-flag-as-important (elmo-filter-folder-target-internal folder) + numbers is-local) (luna-call-next-method)) -(luna-define-method elmo-folder-unmark-important :around ((folder +(luna-define-method elmo-folder-unflag-important :around ((folder elmo-filter-folder) numbers &optional - ignore-flag) - (elmo-folder-unmark-important (elmo-filter-folder-target-internal folder) - numbers ignore-flag) + is-local) + (elmo-folder-unflag-important (elmo-filter-folder-target-internal folder) + numbers is-local) (luna-call-next-method)) -(luna-define-method elmo-folder-mark-as-answered :around ((folder +(luna-define-method elmo-folder-flag-as-answered :around ((folder elmo-filter-folder) - numbers) - (elmo-folder-mark-as-answered (elmo-filter-folder-target-internal folder) - numbers) + numbers + &optional + is-local) + (elmo-folder-flag-as-answered (elmo-filter-folder-target-internal folder) + numbers is-local) (luna-call-next-method)) -(luna-define-method elmo-folder-unmark-answered :around ((folder +(luna-define-method elmo-folder-unflag-answered :around ((folder elmo-filter-folder) - numbers) - (elmo-folder-unmark-answered (elmo-filter-folder-target-internal folder) - numbers) + numbers + &optional + is-local) + (elmo-folder-unflag-answered (elmo-filter-folder-target-internal folder) + numbers is-local) (luna-call-next-method)) (require 'product)