(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)
(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)))
(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)
(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))
(new-msgdb (elmo-make-msgdb))
message-id entity)
+ (elmo-folder-check target-folder)
(when (> len elmo-display-progress-threshold)
(elmo-progress-set 'elmo-folder-msgdb-create
len "Creating msgdb..."))
(unwind-protect
(dolist (number numlist)
- (setq entity (elmo-msgdb-message-entity msgdb number))
+ (setq entity (elmo-message-entity target-folder number))
(when entity
- (elmo-msgdb-append-entity new-msgdb entity
- (elmo-msgdb-flags msgdb number)))
+ (elmo-msgdb-append-entity
+ new-msgdb entity
+ (elmo-message-flags target-folder number)))
(elmo-progress-notify 'elmo-folder-msgdb-create))
(elmo-progress-clear 'elmo-folder-msgdb-create))
new-msgdb)
(elmo-filter-folder-target-internal folder)
flag number))
+(luna-define-method elmo-message-fetch-bodystructure ((folder
+ elmo-filter-folder)
+ number strategy)
+ (elmo-message-fetch-bodystructure
+ (elmo-filter-folder-target-internal folder)
+ number strategy))
+
(luna-define-method elmo-message-fetch ((folder elmo-filter-folder)
number strategy
&optional section outbuf unseen)
;; not available
t)))
-(defsubst elmo-filter-folder-list-unreads (folder)
- (elmo-list-filter
- (elmo-folder-list-messages folder nil 'in-msgdb)
- (elmo-folder-list-unreads
- (elmo-filter-folder-target-internal folder))))
-
-(luna-define-method elmo-folder-list-unreads :around ((folder
- elmo-filter-folder))
- (if (elmo-filter-folder-require-msgdb-internal folder)
- (elmo-filter-folder-list-unreads folder)
- (luna-call-next-method)))
-
-(defsubst elmo-filter-folder-list-importants (folder)
- (elmo-list-filter
- (elmo-folder-list-messages folder nil 'in-msgdb)
- (elmo-folder-list-importants
- (elmo-filter-folder-target-internal folder))))
-
-(luna-define-method elmo-folder-list-importants :around ((folder
- elmo-filter-folder))
- (if (elmo-filter-folder-require-msgdb-internal folder)
- (elmo-filter-folder-list-importants folder)
- (luna-call-next-method)))
-
(luna-define-method elmo-folder-list-subfolders ((folder elmo-filter-folder)
&optional one-level)
(let* ((target (elmo-filter-folder-target-internal folder))
(string= (elmo-filter-value condition) "unread")))
(setq diff (elmo-folder-diff (elmo-filter-folder-target-internal
folder)))
- (if (consp diff)
- (cons (car diff) (car diff))
- (cons (car diff) (nth 1 diff))))
+ (if (consp (cdr diff))
+ ;; new unread unread
+ (list (car diff) (nth 1 diff) (nth 1 diff))
+ (cons (car diff) (car diff))))
((string= "last" (elmo-filter-key condition))
(luna-call-next-method))
(t
(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)
(elmo-message-file-name (elmo-filter-folder-target-internal folder)
number))
-(luna-define-method elmo-folder-mark-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)
- (luna-call-next-method))
-
-(luna-define-method elmo-folder-unmark-read :around ((folder
- elmo-filter-folder)
- numbers
- &optional ignore-flag)
- (elmo-folder-unmark-read (elmo-filter-folder-target-internal folder)
- numbers ignore-flag)
- (luna-call-next-method))
-
-(luna-define-method elmo-folder-mark-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)
- (luna-call-next-method))
-
-(luna-define-method elmo-folder-unmark-important :around ((folder
- elmo-filter-folder)
- numbers
- &optional
- ignore-flag)
- (elmo-folder-unmark-important (elmo-filter-folder-target-internal folder)
- numbers ignore-flag)
- (luna-call-next-method))
-
-(luna-define-method elmo-folder-mark-as-answered :around ((folder
- elmo-filter-folder)
- numbers)
- (elmo-folder-mark-as-answered (elmo-filter-folder-target-internal folder)
- numbers)
- (luna-call-next-method))
-
-
-(luna-define-method elmo-folder-unmark-answered :around ((folder
- elmo-filter-folder)
- numbers)
- (elmo-folder-unmark-answered (elmo-filter-folder-target-internal folder)
- numbers)
- (luna-call-next-method))
+(luna-define-method elmo-folder-set-flag :before ((folder elmo-filter-folder)
+ numbers
+ flag
+ &optional is-local)
+ (elmo-folder-set-flag (elmo-filter-folder-target-internal folder)
+ numbers flag is-local))
+
+(luna-define-method elmo-folder-unset-flag :before ((folder elmo-filter-folder)
+ numbers
+ flag
+ &optional is-local)
+ (elmo-folder-unset-flag (elmo-filter-folder-target-internal folder)
+ numbers flag is-local))
+
+(luna-define-method elmo-message-folder ((folder elmo-filter-folder)
+ number)
+ (elmo-message-folder (elmo-filter-folder-target-internal folder) number))
(require 'product)
(product-provide (provide 'elmo-filter) (require 'elmo-version))