(luna-define-generic elmo-map-folder-list-message-locations (folder)
"Return a location list of the FOLDER.")
-(luna-define-generic elmo-map-folder-unmark-important (folder locations)
- "")
-
-(luna-define-generic elmo-map-folder-mark-as-important (folder locations)
- "")
+(luna-define-generic elmo-map-folder-set-flag (folder locations flag)
+ "Set FLAG to LOCATIONS.")
-(luna-define-generic elmo-map-folder-unmark-read (folder locations)
- "")
-
-(luna-define-generic elmo-map-folder-mark-as-read (folder locations)
- "")
-
-(luna-define-generic elmo-map-folder-unmark-answered (folder locations)
- "")
-
-(luna-define-generic elmo-map-folder-mark-as-answered (folder locations)
- "")
+(luna-define-generic elmo-map-folder-unset-flag (folder locations flag)
+ "Unset FLAG from LOCATIONS.")
(luna-define-generic elmo-map-message-fetch (folder location
strategy
unseen)
"")
-(luna-define-generic elmo-map-folder-list-unreads (folder)
- "")
-
-(luna-define-method elmo-map-folder-list-unreads ((folder elmo-map-folder))
- t)
-
-(luna-define-generic elmo-map-folder-list-importants (folder)
- "")
-
-(luna-define-method elmo-map-folder-list-importants ((folder elmo-map-folder))
- t)
-
-(luna-define-generic elmo-map-folder-list-answereds (folder)
- "")
-
-(luna-define-method elmo-map-folder-list-answereds ((folder elmo-map-folder))
- t)
-
(luna-define-generic elmo-map-folder-delete-messages (folder locations)
"")
(let ((numbers (mapcar
'car
(elmo-map-folder-location-alist-internal folder))))
- (setq numbers (elmo-living-messages numbers (elmo-folder-killed-list-internal folder)))
+ (setq numbers (elmo-living-messages
+ numbers
+ (elmo-folder-killed-list-internal folder)))
(prog1
(cons (elmo-max-of-list numbers)
(length numbers))
(luna-define-method elmo-folder-pack-numbers ((folder elmo-map-folder))
(let* ((msgdb (elmo-folder-msgdb folder))
(numbers (sort (elmo-folder-list-messages folder nil 'in-msgdb) '<))
- (new-msgdb (elmo-make-msgdb))
+ (new-msgdb (elmo-make-msgdb (elmo-folder-msgdb-path folder)))
(number 1)
total location entity)
- (elmo-msgdb-set-path new-msgdb (elmo-folder-msgdb-path folder))
(setq total (length numbers))
(elmo-with-progress-display (> total elmo-display-progress-threshold)
(elmo-folder-pack-numbers total "Packing...")
(dolist (old-number numbers)
(setq entity (elmo-msgdb-message-entity msgdb old-number))
- (elmo-msgdb-overview-entity-set-number entity number)
+ (elmo-message-entity-set-number entity number)
(elmo-msgdb-append-entity new-msgdb entity
(elmo-msgdb-flags msgdb old-number))
(setq location
(luna-define-method elmo-folder-open-internal ((folder elmo-map-folder))
(elmo-map-folder-location-setup
- folder
+ folder
(elmo-msgdb-location-load (elmo-folder-msgdb-path folder)))
(if (elmo-folder-plugged-p folder)
(elmo-map-folder-update-locations
(luna-define-method elmo-folder-close-internal ((folder elmo-map-folder))
(elmo-map-folder-set-location-alist-internal folder nil)
(elmo-map-folder-set-location-hash-internal folder nil))
-
+
(luna-define-method elmo-folder-check ((folder elmo-map-folder))
(elmo-map-folder-update-locations
folder
(elmo-map-folder-list-message-locations folder)))
+(luna-define-method elmo-folder-next-message-number ((folder elmo-map-folder))
+ (1+ (elmo-map-folder-number-max-internal folder)))
+
(luna-define-method elmo-folder-clear :around ((folder elmo-map-folder)
&optional keep-killed)
(unless keep-killed
((folder elmo-map-folder) &optional nohide)
(mapcar 'car (elmo-map-folder-location-alist-internal folder)))
-(luna-define-method elmo-folder-unmark-important :before ((folder
- elmo-map-folder)
- numbers
- &optional
- ignore-flags)
- (unless ignore-flags
- (elmo-map-folder-unmark-important
- folder
- (elmo-map-folder-numbers-to-locations folder numbers))))
-
-(luna-define-method elmo-folder-mark-as-important :before ((folder
- elmo-map-folder)
- numbers
- &optional
- ignore-flags)
- (unless ignore-flags
- (elmo-map-folder-mark-as-important
- folder
- (elmo-map-folder-numbers-to-locations folder numbers))))
-
-(luna-define-method elmo-folder-unmark-read :before ((folder elmo-map-folder)
- numbers
- &optional ignore-flags)
- (unless ignore-flags
- (elmo-map-folder-unmark-read
+(luna-define-method elmo-folder-set-flag :before ((folder elmo-map-folder)
+ numbers
+ flag
+ &optional is-local)
+ (unless is-local
+ (elmo-map-folder-set-flag
folder
- (elmo-map-folder-numbers-to-locations folder numbers))))
-
-(luna-define-method elmo-folder-mark-as-read :before ((folder
- elmo-map-folder)
- numbers
- &optional ignore-flags)
- (unless ignore-flags
- (elmo-map-folder-mark-as-read
+ (elmo-map-folder-numbers-to-locations folder numbers)
+ flag)))
+
+(luna-define-method elmo-folder-unset-flag :before ((folder elmo-map-folder)
+ numbers
+ flag
+ &optional is-local)
+ (unless is-local
+ (elmo-map-folder-unset-flag
folder
- (elmo-map-folder-numbers-to-locations folder numbers))))
-
-(luna-define-method elmo-folder-unmark-answered :before ((folder
- elmo-map-folder)
- numbers)
- (elmo-map-folder-unmark-answered
- folder
- (elmo-map-folder-numbers-to-locations folder numbers)))
-
-(luna-define-method elmo-folder-mark-as-answered :before ((folder
- elmo-map-folder)
- numbers)
- (elmo-map-folder-mark-as-answered
- folder
- (elmo-map-folder-numbers-to-locations folder numbers)))
+ (elmo-map-folder-numbers-to-locations folder numbers)
+ flag)))
(luna-define-method elmo-message-fetch-internal ((folder elmo-map-folder)
number strategy
(elmo-map-message-location folder number)
strategy section unread))
-(luna-define-method elmo-folder-list-unreads :around ((folder elmo-map-folder))
- (let ((locations (elmo-map-folder-list-unreads folder)))
+(luna-define-method elmo-folder-list-flagged-internal ((folder elmo-map-folder)
+ flag)
+ (let ((locations (elmo-map-folder-list-flagged folder flag)))
(if (listp locations)
(elmo-map-folder-locations-to-numbers folder locations)
- (luna-call-next-method))))
+ t)))
-(luna-define-method elmo-folder-list-importants :around ((folder
- elmo-map-folder))
- (let ((locations (elmo-map-folder-list-importants folder)))
- (if (listp locations)
- (elmo-map-folder-locations-to-numbers folder locations)
- (luna-call-next-method))))
+(luna-define-generic elmo-map-folder-list-flagged (folder flag)
+ "Return a list of message location in the FOLDER with FLAG.
+Return t if the message list is not available.")
-(luna-define-method elmo-folder-list-answereds :around ((folder
- elmo-map-folder))
- (let ((locations (elmo-map-folder-list-answereds folder)))
- (if (listp locations)
- (elmo-map-folder-locations-to-numbers folder locations)
- (luna-call-next-method))))
+(luna-define-method elmo-map-folder-list-flagged ((folder elmo-map-folder)
+ flag)
+ t)
-(luna-define-method elmo-folder-delete-messages ((folder elmo-map-folder)
- numbers)
+(luna-define-method elmo-folder-delete-messages-internal ((folder
+ elmo-map-folder)
+ numbers)
(elmo-map-folder-delete-messages
folder
- (elmo-map-folder-numbers-to-locations folder numbers))
- (dolist (number numbers)
- (elmo-map-folder-set-location-alist-internal
- folder
- (delq (elmo-get-hash-val
- (concat "#" (int-to-string number))
- (elmo-map-folder-location-hash-internal
- folder))
- (elmo-map-folder-location-alist-internal folder))))
- t) ; success
+ (elmo-map-folder-numbers-to-locations folder numbers)))
+
+(luna-define-method elmo-folder-detach-messages :around ((folder
+ elmo-map-folder)
+ numbers)
+ (when (luna-call-next-method)
+ (dolist (number numbers)
+ (elmo-map-folder-set-location-alist-internal
+ folder
+ (delq (elmo-get-hash-val
+ (concat "#" (int-to-string number))
+ (elmo-map-folder-location-hash-internal
+ folder))
+ (elmo-map-folder-location-alist-internal folder)))
+ (elmo-clear-hash-val (concat "#" (int-to-string number))
+ (elmo-map-folder-location-hash-internal
+ folder)))
+ t)) ; success
(require 'product)
(product-provide (provide 'elmo-map) (require 'elmo-version))