* elmo.el (elmo-generic-folder-append-messages): Set flag as nil
[elisp/wanderlust.git] / elmo / elmo-pipe.el
index e2dfc04..feae2df 100644 (file)
@@ -50,7 +50,8 @@
                                       (elmo-make-folder
                                        (elmo-match-string 3 name)))
     (elmo-pipe-folder-set-copy-internal folder
-                                       (string= ":" (elmo-match-string 2 name))))
+                                       (string= ":"
+                                                (elmo-match-string 2 name))))
   folder)
 
 (luna-define-method elmo-folder-get-primitive-list ((folder elmo-pipe-folder))
       (elmo-folder-contains-type (elmo-pipe-folder-dst-internal folder) type)))
 
 (luna-define-method elmo-folder-msgdb-create ((folder elmo-pipe-folder)
-                                             numlist new-mark already-mark
-                                             seen-mark important-mark
-                                             seen-list)
+                                             numlist flag-table)
   (elmo-folder-msgdb-create (elmo-pipe-folder-dst-internal folder)
-                           numlist new-mark already-mark
-                           seen-mark important-mark seen-list))
+                           numlist flag-table))
 
 (luna-define-method elmo-folder-append-messages ((folder elmo-pipe-folder)
                                                 src-folder numbers
-                                                unread-marks
                                                 &optional same-number)
   (elmo-folder-append-messages (elmo-pipe-folder-dst-internal folder)
                               src-folder numbers
-                              unread-marks
                               same-number))
 
 (luna-define-method elmo-folder-append-buffer ((folder elmo-pipe-folder)
-                                              unread &optional number)
+                                              &optional flag number)
   (elmo-folder-append-buffer (elmo-pipe-folder-dst-internal folder)
-                            unread number))
+                            flag number))
 
 (luna-define-method elmo-message-fetch ((folder elmo-pipe-folder)
                                        number strategy
   (elmo-message-fetch (elmo-pipe-folder-dst-internal folder)
                      number strategy section outbuf unseen))
 
+(luna-define-method elmo-folder-clear :after ((folder elmo-pipe-folder)
+                                             &optional keep-killed)
+  (unless keep-killed
+    (elmo-pipe-folder-copied-list-save folder nil)))
+
 (luna-define-method elmo-folder-delete-messages ((folder elmo-pipe-folder)
                                                 numbers)
   (elmo-folder-delete-messages (elmo-pipe-folder-dst-internal folder)
   (elmo-folder-list-messages-internal (elmo-pipe-folder-dst-internal
                                       folder) nohide))
 
-(luna-define-method elmo-folder-list-unreads-internal
-  ((folder elmo-pipe-folder) unread-marks &optional mark-alist)
-  (elmo-folder-list-unreads-internal (elmo-pipe-folder-dst-internal folder)
-                                    unread-marks mark-alist))
+(luna-define-method elmo-folder-list-unreads ((folder elmo-pipe-folder))
+  (elmo-folder-list-unreads (elmo-pipe-folder-dst-internal folder)))
+
+(luna-define-method elmo-folder-list-importants ((folder elmo-pipe-folder))
+  (elmo-folder-list-importants (elmo-pipe-folder-dst-internal folder)))
 
-(luna-define-method elmo-folder-list-importants-internal
-  ((folder elmo-pipe-folder) important-mark)
-  (elmo-folder-list-importants-internal (elmo-pipe-folder-dst-internal folder)
-                                       important-mark))
+(luna-define-method elmo-folder-list-answereds ((folder elmo-pipe-folder))
+  (elmo-folder-list-answereds (elmo-pipe-folder-dst-internal folder)))
 
 (luna-define-method elmo-folder-status ((folder elmo-pipe-folder))
   (elmo-folder-open-internal (elmo-pipe-folder-src-internal folder))
    (elmo-pipe-folder-dst-internal folder) numbers start-number))
 
 (luna-define-method elmo-folder-mark-as-read ((folder elmo-pipe-folder)
-                                             numbers)
+                                             numbers &optional ignore-flag)
   (elmo-folder-mark-as-read (elmo-pipe-folder-dst-internal folder)
-                           numbers))
+                           numbers ignore-flag))
 
 (luna-define-method elmo-folder-unmark-read ((folder elmo-pipe-folder)
-                                             numbers)
+                                            numbers
+                                            &optional ignore-flag)
   (elmo-folder-unmark-read (elmo-pipe-folder-dst-internal folder)
-                          numbers))
+                          numbers ignore-flag))
 
 (luna-define-method elmo-folder-unmark-important ((folder elmo-pipe-folder)
-                                                 numbers)
+                                                 numbers
+                                                 &optional ignore-flag)
   (elmo-folder-unmark-important (elmo-pipe-folder-dst-internal folder)
-                               numbers))
+                               numbers ignore-flag))
 
 (luna-define-method elmo-folder-mark-as-important ((folder elmo-pipe-folder)
-                                                  numbers)
+                                                  numbers
+                                                  &optional ignore-flag)
   (elmo-folder-mark-as-important (elmo-pipe-folder-dst-internal folder)
-                                numbers))
+                                numbers ignore-flag))
 
 (luna-define-method elmo-folder-pack-numbers ((folder elmo-pipe-folder))
   (elmo-folder-pack-numbers (elmo-pipe-folder-dst-internal folder)))
 
+(luna-define-method elmo-folder-rename ((folder elmo-pipe-folder) new-name)
+  (let* ((new-folder (elmo-make-folder new-name)))
+    (unless (string= (elmo-folder-name-internal
+                     (elmo-pipe-folder-src-internal folder))
+                    (elmo-folder-name-internal
+                     (elmo-pipe-folder-src-internal new-folder)))
+      (error "Source folder differ"))
+    (unless (eq (elmo-folder-type-internal
+                (elmo-pipe-folder-dst-internal folder))
+               (elmo-folder-type-internal
+                (elmo-pipe-folder-dst-internal new-folder)))
+      (error "Not same folder type"))
+    (if (or (file-exists-p (elmo-folder-msgdb-path
+                           (elmo-pipe-folder-dst-internal new-folder)))
+           (elmo-folder-exists-p
+            (elmo-pipe-folder-dst-internal new-folder)))
+       (error "Already exists folder: %s" new-name))
+    (elmo-folder-send (elmo-pipe-folder-dst-internal folder)
+                     'elmo-folder-rename-internal
+                     (elmo-pipe-folder-dst-internal new-folder))
+    (elmo-msgdb-rename-path folder new-folder)))
+
 (require 'product)
 (product-provide (provide 'elmo-pipe) (require 'elmo-version))