* wl-summary.el (wl-summary-update-persistent-mark): Call
[elisp/wanderlust.git] / elmo / elmo-nmz.el
index 1d74132..6db859f 100644 (file)
@@ -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))