X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Felmo-nmz.el;h=6db859fe21c950953aadd87fe7b9e7161b106284;hb=e93172050fe651aff94e7d078a0e7e1e0143810a;hp=1d7413270f2542e9376528f2ab9c3a1d722bfe0d;hpb=7a6d538b2686112991ac8e2dc1f82b1a02f52007;p=elisp%2Fwanderlust.git diff --git a/elmo/elmo-nmz.el b/elmo/elmo-nmz.el index 1d74132..6db859f 100644 --- a/elmo/elmo-nmz.el +++ b/elmo/elmo-nmz.el @@ -48,7 +48,7 @@ If the value is a list, all elements are used as index paths for namazu." :type 'symbol :group 'elmo) -(defcustom elmo-nmz-args '("--all" "--list" "--early") +(defcustom elmo-nmz-args '("--all" "--list" "--late") "*Argument list for namazu to list matched files." :type '(repeat string) :group 'elmo) @@ -98,57 +98,38 @@ If the value is a list, all elements are used as index paths for namazu." (elmo-folder-name-internal folder)) (expand-file-name "nmz" elmo-msgdb-directory))) -(defun elmo-nmz-msgdb-create-entity (folder number) +(defun elmo-nmz-msgdb-create-entity (msgdb folder number) "Create msgdb entity for the message in the FOLDER with NUMBER." - (let ((location (elmo-map-message-location folder number)) + (let ((location (expand-file-name (elmo-map-message-location folder number))) entity uid) - (setq entity (elmo-msgdb-create-overview-entity-from-file number location)) - (unless (or (> (length (elmo-msgdb-overview-entity-get-to entity)) 0) - (> (length (elmo-msgdb-overview-entity-get-cc entity)) 0) - (not (string= (elmo-msgdb-overview-entity-get-subject entity) + (setq entity (elmo-msgdb-create-message-entity-from-file + (elmo-msgdb-message-entity-handler msgdb) number location)) + (unless (or (> (length (elmo-message-entity-field entity 'to)) 0) + (> (length (elmo-message-entity-field entity 'cc)) 0) + (not (string= (elmo-message-entity-field entity 'subject) elmo-no-subject))) - (elmo-msgdb-overview-entity-set-subject entity location) + (elmo-message-entity-set-field entity 'subject location) (setq uid (nth 2 (file-attributes location))) - (elmo-msgdb-overview-entity-set-from entity - (concat - (user-full-name uid) - " <"(user-login-name uid) "@" - (system-name) ">"))) + (elmo-message-entity-set-field entity 'from + (concat + (user-full-name uid) + " <"(user-login-name uid) "@" + (system-name) ">"))) entity)) (luna-define-method elmo-folder-msgdb-create ((folder elmo-nmz-folder) - numlist new-mark - already-mark seen-mark - important-mark - seen-list) - (let* (overview number-alist mark-alist entity - i percent num pair) + numlist flag-table) + (let ((new-msgdb (elmo-make-msgdb)) + entity mark i percent num) (setq num (length numlist)) (setq i 0) (message "Creating msgdb...") (while numlist (setq entity (elmo-nmz-msgdb-create-entity - folder (car numlist))) + new-msgdb folder (car numlist))) (when entity - (setq overview - (elmo-msgdb-append-element - overview entity)) - (setq number-alist - (elmo-msgdb-number-add number-alist - (elmo-msgdb-overview-entity-get-number - entity) - (elmo-msgdb-overview-entity-get-id - entity))) - (setq mark-alist - (elmo-msgdb-mark-append - mark-alist - (elmo-msgdb-overview-entity-get-number - entity) - (or (elmo-msgdb-global-mark-get - (elmo-msgdb-overview-entity-get-id - entity)) - new-mark)))) + (elmo-msgdb-append-entity new-msgdb entity '(new unread))) (when (> num elmo-display-progress-threshold) (setq i (1+ i)) (setq percent (/ (* i 100) num)) @@ -156,8 +137,8 @@ If the value is a list, all elements are used as index paths for namazu." 'elmo-folder-msgdb-create "Creating msgdb..." percent)) (setq numlist (cdr numlist))) - (message "Creating msgdb...done.") - (list overview number-alist mark-alist))) + (message "Creating msgdb...done") + new-msgdb)) (luna-define-method elmo-folder-message-file-p ((folder elmo-nmz-folder)) t) @@ -170,8 +151,7 @@ If the value is a list, all elements are used as index paths for namazu." ((folder elmo-nmz-folder)) t) -(luna-define-method elmo-folder-diff ((folder elmo-nmz-folder) - &optional numbers) +(luna-define-method elmo-folder-diff ((folder elmo-nmz-folder)) (cons nil nil)) (luna-define-method elmo-folder-message-make-temp-files ((folder @@ -194,14 +174,14 @@ If the value is a list, all elements are used as index paths for namazu." &optional section unseen) (when (file-exists-p location) (prog1 - (insert-file-contents-as-binary location) + (insert-file-contents-as-binary (expand-file-name location)) (unless (or (std11-field-body "To") (std11-field-body "Cc") (std11-field-body "Subject")) (let (charset guess uid) (erase-buffer) (set-buffer-multibyte t) - (insert-file-contents location) + (insert-file-contents (expand-file-name location)) (setq charset (detect-mime-charset-region (point-min) (point-max))) (goto-char (point-min)) @@ -249,53 +229,11 @@ If the value is a list, all elements are used as index paths for namazu." (end-of-line) (setq locations (cons (buffer-substring bol (point)) locations)) (forward-line 1)) - locations))) + (nreverse locations)))) (luna-define-method elmo-folder-exists-p ((folder elmo-nmz-folder)) t) -(luna-define-method elmo-folder-search ((folder elmo-nmz-folder) - condition &optional from-msgs) - (let* ((msgs (or from-msgs (elmo-folder-list-messages folder))) - (orig msgs) - (i 0) - case-fold-search matches - percent num - (num (length msgs))) - (while msgs - (if (elmo-file-field-condition-match - (elmo-map-message-location folder (car msgs)) - condition - (car msgs) - orig) - (setq matches (cons (car msgs) matches))) - (setq i (1+ i)) - (setq percent (/ (* i 100) num)) - (elmo-display-progress - 'elmo-nmz-search "Searching..." - percent) - (setq msgs (cdr msgs))) - matches)) - -;;; To override elmo-map-folder methods. -(luna-define-method elmo-folder-list-unreads-internal - ((folder elmo-nmz-folder) unread-marks &optional mark-alist) - t) - -(luna-define-method elmo-folder-unmark-important ((folder elmo-nmz-folder) - numbers) - t) - -(luna-define-method elmo-folder-mark-as-important ((folder elmo-nmz-folder) - numbers) - t) - -(luna-define-method elmo-folder-unmark-read ((folder elmo-nmz-folder) numbers) - t) - -(luna-define-method elmo-folder-mark-as-read ((folder elmo-nmz-folder) numbers) - t) - (require 'product) (product-provide (provide 'elmo-nmz) (require 'elmo-version))