Changed codename to Venus-pre2.
[elisp/wanderlust.git] / elmo / elmo-imap4.el
index 5e90a59..f45ed52 100644 (file)
@@ -792,16 +792,18 @@ If CHOP-LENGTH is not specified, message set is not chopped."
 
 ;;
 ;; app-data:
-;; cons of seen-list and result of use-flag-p.
+;; cons of list
+;; 0: new-mark 1: already-mark 2: seen-mark 3: important-mark
+;; 4: seen-list
+;; and result of use-flag-p.
 (defsubst elmo-imap4-fetch-callback-1-subr (entity flags app-data)
   "A msgdb entity callback function."
   (let* ((use-flag (cdr app-data))
         (app-data (car app-data))
-        (seen (member (car entity) app-data))
+        (seen (member (car entity) (nth 4 app-data)))
         mark)
     (if (member "\\Flagged" flags)
-       (elmo-msgdb-global-mark-set (car entity)
-                                   elmo-msgdb-important-mark))
+       (elmo-msgdb-global-mark-set (car entity) (nth 3 app-data)))
     (if (setq mark (elmo-msgdb-global-mark-get (car entity)))
        (unless (member "\\Seen" flags)
          (setq elmo-imap4-seen-messages
@@ -810,22 +812,17 @@ If CHOP-LENGTH is not specified, message set is not chopped."
                 elmo-imap4-seen-messages)))
       (setq mark (or (if (elmo-file-cache-status
                          (elmo-file-cache-get (car entity)))
-                        ;; cached.
-                        (if (member "\\Answered" flags)
-                            elmo-msgdb-answered-cached-mark
-                          (if (or seen
-                                  (and use-flag
-                                       (member "\\Seen" flags)))
-                              nil
-                            elmo-msgdb-unread-cached-mark))
-                      (if (member "\\Answered" flags)
-                          elmo-msgdb-answered-uncached-mark
                         (if (or seen
                                 (and use-flag
                                      (member "\\Seen" flags)))
-                            (if elmo-imap4-use-cache
-                                elmo-msgdb-read-uncached-mark)
-                          elmo-msgdb-new-mark))))))
+                            nil
+                          (nth 1 app-data))
+                      (if (or seen
+                              (and use-flag
+                                   (member "\\Seen" flags)))
+                          (if elmo-imap4-use-cache
+                              (nth 2 app-data))
+                        (nth 0 app-data))))))
     (setq elmo-imap4-current-msgdb
          (elmo-msgdb-append
           elmo-imap4-current-msgdb
@@ -1886,13 +1883,6 @@ Return nil if no complete line has arrived."
   ((folder elmo-imap4-folder))
   (elmo-imap4-list folder "flagged"))
 
-(luna-define-method elmo-folder-list-answereds-plugged
-  ((folder elmo-imap4-folder))
-  (elmo-imap4-list folder "answered"))
-
-(defun elmo-imap4-folder-list-any-plugged (folder)
-  (elmo-imap4-list folder "or answered or unseen flagged"))
-
 (luna-define-method elmo-folder-use-flag-p ((folder elmo-imap4-folder))
   (not (string-match elmo-imap4-disuse-server-flag-mailbox-regexp
                     (elmo-imap4-folder-mailbox-internal folder))))
@@ -2106,7 +2096,7 @@ If optional argument REMOVE is non-nil, remove FLAG."
 (defun elmo-imap4-search-internal-primitive (folder session filter from-msgs)
   (let ((search-key (elmo-filter-key filter))
        (imap-search-keys '("bcc" "body" "cc" "from" "subject" "to"
-                           "larger" "smaller" "mark"))
+                           "larger" "smaller"))
        (total 0)
        (length (length from-msgs))
        charset set-list end results)
@@ -2124,16 +2114,6 @@ If optional argument REMOVE is non-nil, remove FLAG."
                           numbers)))
        (mapcar '(lambda (x) (delete x numbers)) rest)
        numbers))
-     ((string= "mark" search-key)
-      (cond
-       ((string= "unread" (elmo-filter-value filter))
-       (elmo-folder-list-unreads folder))
-       ((string= "important" (elmo-filter-value filter))
-       (elmo-folder-list-importants folder))
-       ((string= "answered" (elmo-filter-value filter))
-       (elmo-folder-list-answereds folder))
-       ((string= "any" (elmo-filter-value filter))
-       (elmo-imap4-folder-list-any-plugged folder))))
      ((or (string= "since" search-key)
          (string= "before" search-key))
       (setq search-key (concat "sent" search-key)
@@ -2261,7 +2241,7 @@ If optional argument REMOVE is non-nil, remove FLAG."
     (luna-call-next-method)))
 
 (luna-define-method elmo-folder-msgdb-create-plugged
-  ((folder elmo-imap4-folder) numbers seen-list)
+  ((folder elmo-imap4-folder) numbers &rest args)
   (when numbers
     (let ((session (elmo-imap4-get-session folder))
          (headers
@@ -2286,7 +2266,7 @@ If optional argument REMOVE is non-nil, remove FLAG."
        (setq elmo-imap4-current-msgdb nil
              elmo-imap4-seen-messages nil
              elmo-imap4-fetch-callback 'elmo-imap4-fetch-callback-1
-             elmo-imap4-fetch-callback-data (cons seen-list
+             elmo-imap4-fetch-callback-data (cons args
                                                   (elmo-folder-use-flag-p
                                                    folder)))
        (while set-list
@@ -2326,14 +2306,6 @@ If optional argument REMOVE is non-nil, remove FLAG."
   ((folder elmo-imap4-folder) numbers)
   (elmo-imap4-set-flag folder numbers "\\Seen"))
 
-(luna-define-method elmo-folder-unmark-answered-plugged
-  ((folder elmo-imap4-folder) numbers)
-  (elmo-imap4-set-flag folder numbers "\\Answered" 'remove))
-
-(luna-define-method elmo-folder-mark-as-answered-plugged
-  ((folder elmo-imap4-folder) numbers)
-  (elmo-imap4-set-flag folder numbers "\\Answered"))
-
 (luna-define-method elmo-message-use-cache-p ((folder elmo-imap4-folder)
                                              number)
   elmo-imap4-use-cache)
@@ -2542,7 +2514,8 @@ If optional argument REMOVE is non-nil, remove FLAG."
                     (elmo-net-folder-user-internal (, folder2)))))))
 
 (luna-define-method elmo-folder-append-messages :around
-  ((folder elmo-imap4-folder) src-folder numbers &optional same-number)
+  ((folder elmo-imap4-folder) src-folder numbers unread-marks
+   &optional same-number)
   (if (and (eq (elmo-folder-type-internal src-folder) 'imap4)
           (elmo-imap4-identical-system-p folder src-folder)
           (elmo-folder-plugged-p folder))
@@ -2593,7 +2566,7 @@ If optional argument REMOVE is non-nil, remove FLAG."
     (unless elmo-inhibit-display-retrieval-progress
       (elmo-display-progress 'elmo-imap4-display-literal-progress
                             "Retrieving..." 100)  ; remove progress bar.
-      (message "Retrieving...done."))
+      (message "Retrieving...done"))
     (if (setq response (elmo-imap4-response-bodydetail-text
                        (elmo-imap4-response-value-all
                         response 'fetch)))
@@ -2633,10 +2606,7 @@ If optional argument REMOVE is non-nil, remove FLAG."
       (goto-char (point-min))
       (std11-field-body (symbol-name field)))))
 
-(luna-define-method elmo-folder-search-requires-msgdb-p ((folder
-                                                         elmo-imap4-folder)
-                                                        condition)
-  nil)
+
 
 (require 'product)
 (product-provide (provide 'elmo-imap4) (require 'elmo-version))