X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Felmo-map.el;h=526e58742e1f2539fd88675ca096c06100c606b4;hb=64eb91d7fe775e78e0f1e6555b595e40f391260a;hp=8b0656d75c830207762adc99b785c5c62eaca685;hpb=51f9787799e1f8a5ad1f9cde0fd99489dae071c3;p=elisp%2Fwanderlust.git diff --git a/elmo/elmo-map.el b/elmo/elmo-map.el index 8b0656d..526e587 100644 --- a/elmo/elmo-map.el +++ b/elmo/elmo-map.el @@ -74,6 +74,12 @@ (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-message-fetch (folder location strategy &optional @@ -84,26 +90,39 @@ (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) "") (luna-define-method elmo-folder-status ((folder elmo-map-folder)) (elmo-folder-open-internal folder) - (prog1 - (let ((numbers (mapcar - 'car - (elmo-map-folder-location-alist-internal folder)))) + (elmo-folder-set-killed-list-internal + folder + (elmo-msgdb-killed-list-load (elmo-folder-msgdb-path folder))) + (let ((numbers (mapcar + 'car + (elmo-map-folder-location-alist-internal folder)))) + (setq numbers (elmo-living-messages numbers (elmo-folder-killed-list-internal folder))) + (prog1 (cons (elmo-max-of-list numbers) - (length numbers))) - ;; Don't close after status. - (unless (elmo-folder-reserve-status-p folder) - (elmo-folder-close-internal folder)))) + (length numbers)) + ;; Don't close after status. + (unless (elmo-folder-reserve-status-p folder) + (elmo-folder-close-internal folder))))) (defun elmo-map-message-number (folder location) "Return number of the message in the FOLDER with LOCATION." @@ -146,10 +165,9 @@ (elmo-map-folder-location-setup folder (nreverse location)) (elmo-folder-set-msgdb-internal folder - (list overview - (nreverse number-alist) - (nreverse mark-alist) - (elmo-msgdb-make-overview-hashtb overview))))) + (elmo-make-msgdb overview + (nreverse number-alist) + (nreverse mark-alist))))) (defun elmo-map-folder-location-setup (folder locations) (elmo-map-folder-set-location-alist-internal @@ -257,26 +275,48 @@ ((folder elmo-map-folder) &optional nohide) (mapcar 'car (elmo-map-folder-location-alist-internal folder))) -(luna-define-method elmo-folder-unmark-important ((folder elmo-map-folder) - numbers) +(luna-define-method elmo-folder-unmark-important :before ((folder + elmo-map-folder) + numbers) (elmo-map-folder-unmark-important folder (elmo-map-folder-numbers-to-locations folder numbers))) -(luna-define-method elmo-folder-mark-as-important ((folder elmo-map-folder) - numbers) +(luna-define-method elmo-folder-mark-as-important :before ((folder + elmo-map-folder) + numbers) (elmo-map-folder-mark-as-important folder (elmo-map-folder-numbers-to-locations folder numbers))) -(luna-define-method elmo-folder-unmark-read ((folder elmo-map-folder) - numbers) - (elmo-map-folder-unmark-read +(luna-define-method elmo-folder-unmark-read :before ((folder elmo-map-folder) + numbers + &optional ignore-flags) + (unless ignore-flags + (elmo-map-folder-unmark-read + 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 + 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-read ((folder elmo-map-folder) numbers) - (elmo-map-folder-mark-as-read +(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))) @@ -288,18 +328,25 @@ (elmo-map-message-location folder number) strategy section unread)) -(luna-define-method elmo-folder-list-unreads-internal - ((folder elmo-map-folder) unread-marks &optional mark-alist) - (elmo-map-folder-locations-to-numbers - folder - (elmo-map-folder-list-unreads folder))) +(luna-define-method elmo-folder-list-unreads :around ((folder elmo-map-folder)) + (let ((locations (elmo-map-folder-list-unreads folder))) + (if (listp locations) + (elmo-map-folder-locations-to-numbers folder locations) + (luna-call-next-method)))) -(luna-define-method elmo-folder-list-importants-internal - ((folder elmo-map-folder) important-mark) +(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) - t))) + (luna-call-next-method)))) + +(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-folder-delete-messages ((folder elmo-map-folder) numbers) @@ -315,7 +362,6 @@ folder)) (elmo-map-folder-location-alist-internal folder)))) t) ; success - (require 'product) (product-provide (provide 'elmo-map) (require 'elmo-version))