X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Felmo-sendlog.el;h=ef62fa91e7c95fb4e437a1728a3c788f4e941443;hb=b6a61bccbe09f078910368fe738a0b3a1a3e28bf;hp=c8cbbc4232033bb266cf04c3f536d9e1010d38cc;hpb=10c9f47884508cec3b96340be0b4118938633e51;p=elisp%2Fwanderlust.git diff --git a/elmo/elmo-sendlog.el b/elmo/elmo-sendlog.el index c8cbbc4..ef62fa9 100644 --- a/elmo/elmo-sendlog.el +++ b/elmo/elmo-sendlog.el @@ -37,7 +37,8 @@ ;;; ELMO sendlog folder (eval-and-compile - (luna-define-class elmo-sendlog-folder (elmo-map-folder) (dir-name directory)) + (luna-define-class elmo-sendlog-folder (elmo-map-folder elmo-file-tag) + (dir-name directory)) (luna-define-internal-accessors 'elmo-sendlog-folder)) (luna-define-method elmo-folder-initialize ((folder elmo-sendlog-folder) @@ -59,17 +60,17 @@ result) (if (not (file-readable-p filename)) nil - (elmo-set-work-buf - (as-binary-input-file - (insert-file-contents filename)) - (goto-char (point-min)) - (catch 'done - (while t - (re-search-forward "id=\\([^@]+@[^@]+\\)$" (point-at-eol) t) - (setq result (append result (list (match-string 1)))) - (if (eq (1+ (point-at-eol)) (point-max)) - (throw 'done nil) - (beginning-of-line 2)))))) + (with-temp-buffer + (as-binary-input-file + (insert-file-contents filename)) + (goto-char (point-min)) + (catch 'done + (while t + (re-search-forward "id=\\([^@]+@[^@]+\\)$" (point-at-eol) t) + (setq result (append result (list (match-string 1)))) + (if (eq (1+ (point-at-eol)) (point-max)) + (throw 'done nil) + (beginning-of-line 2)))))) result)) (luna-define-method elmo-folder-message-file-p ((folder elmo-sendlog-folder)) @@ -82,53 +83,37 @@ (luna-define-method elmo-folder-msgdb-create ((folder elmo-sendlog-folder) numbers flag-table) - (let ((i 0) - (len (length numbers)) - overview number-alist mark-alist entity message-id - num mark) - (message "Creating msgdb...") - (while numbers - (setq entity - (elmo-msgdb-create-overview-entity-from-file - (car numbers) (elmo-message-file-name folder (car numbers)))) - (if (null entity) - (elmo-folder-set-killed-list-internal - folder - (nconc - (elmo-folder-killed-list-internal folder) - (list (car numbers)))) - (setq num (elmo-msgdb-overview-entity-get-number entity)) - (setq overview - (elmo-msgdb-append-element - overview entity)) - (setq message-id (elmo-msgdb-overview-entity-get-id entity)) - (setq number-alist - (elmo-msgdb-number-add number-alist - num - message-id)) - (if (setq mark (or (elmo-msgdb-global-mark-get message-id) - (elmo-msgdb-mark - (elmo-flag-table-get flag-table message-id) - (elmo-file-cache-status - (elmo-file-cache-get message-id)) - 'new))) - (setq mark-alist - (elmo-msgdb-mark-append - mark-alist - num mark))) - (when (> len elmo-display-progress-threshold) - (setq i (1+ i)) - (elmo-display-progress - 'elmo-sendlog-folder-msgdb-create "Creating msgdb..." - (/ (* i 100) len)))) - (setq numbers (cdr numbers))) - (message "Creating msgdb...done") - (list overview number-alist mark-alist))) - -(luna-define-method elmo-message-fetch-with-cache-process - ((folder elmo-sendlog-folder) number strategy &optional section unseen) + (let ((new-msgdb (elmo-make-msgdb)) + entity message-id flags) + (elmo-with-progress-display (elmo-folder-msgdb-create (length numbers)) + "Creating msgdb" + (dolist (number numbers) + (setq entity + (elmo-msgdb-create-message-entity-from-file + (elmo-msgdb-message-entity-handler new-msgdb) number + (elmo-message-file-name folder number))) + (if (null entity) + (elmo-folder-set-killed-list-internal + folder + (nconc + (elmo-folder-killed-list-internal folder) + (list number))) + (setq message-id (elmo-message-entity-field entity 'message-id) + flags (elmo-flag-table-get flag-table message-id)) + (elmo-global-flags-set flags folder number message-id) + (elmo-msgdb-append-entity new-msgdb entity flags)) + (elmo-progress-notify 'elmo-folder-msgdb-create))) + new-msgdb)) + +(luna-define-method elmo-message-fetch + ((folder elmo-sendlog-folder) number strategy &optional unseen section) ;; disbable cache process - (elmo-message-fetch-internal folder number strategy section unseen)) + (erase-buffer) + (when (elmo-message-fetch-internal folder number strategy section unseen) + (when (and (not unseen) + (elmo-message-flagged-p folder number 'unread)) + (elmo-message-unset-flag folder number 'unread)) + t)) (luna-define-method elmo-map-message-fetch ((folder elmo-sendlog-folder) location strategy @@ -143,16 +128,15 @@ (luna-define-method elmo-folder-delete-messages ((folder elmo-sendlog-folder) numbers) - (let ((killed-list (elmo-folder-killed-list-internal folder))) - (dolist (number numbers) - (setq killed-list - (elmo-msgdb-set-as-killed killed-list number))) - (elmo-folder-set-killed-list-internal folder killed-list)) + (elmo-folder-kill-messages folder numbers) t) (luna-define-method elmo-message-file-p ((folder elmo-sendlog-folder) number) t) +(luna-define-method elmo-folder-have-subfolder-p ((folder elmo-sendlog-folder)) + nil) + (require 'product) (product-provide (provide 'elmo-sendlog) (require 'elmo-version))