;;; 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)
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))
(luna-define-method elmo-folder-msgdb-create ((folder elmo-sendlog-folder)
numbers flag-table)
- (let ((i 0)
- (len (length numbers))
- (new-msgdb (elmo-make-msgdb))
+ (let ((new-msgdb (elmo-make-msgdb))
entity message-id flags)
- (message "Creating msgdb...")
- (while numbers
- (setq entity
- (elmo-msgdb-create-message-entity-from-file
- (elmo-msgdb-message-entity-handler new-msgdb) (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 message-id (elmo-message-entity-field entity 'message-id)
- flags (elmo-flag-table-get flag-table message-id))
- (elmo-global-flags-set flags folder (car numbers) message-id)
- (elmo-msgdb-append-entity new-msgdb entity flags))
- (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")
+ (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-with-cache-process
- ((folder elmo-sendlog-folder) number strategy &optional section unseen)
+(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
(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))