* wl-fldmgr.el (wl-fldmgr-make-indent): Change from macro to function.
[elisp/wanderlust.git] / elmo / elmo-multi.el
index d9c2cf1..c95d4ab 100644 (file)
 
 (defmacro elmo-multi-real-folder-number (folder number)
   "Returns a cons cell of real FOLDER and NUMBER."
-  (` (cons (nth (-
-                (/ (, number)
-                   (elmo-multi-folder-divide-number-internal (, folder)))
-                1) (elmo-multi-folder-children-internal (, folder)))
-          (% (, number) (elmo-multi-folder-divide-number-internal
-                         (, folder))))))
+  `(cons (nth (-
+              (/ ,number
+                 (elmo-multi-folder-divide-number-internal ,folder))
+              1) (elmo-multi-folder-children-internal ,folder))
+        (% ,number (elmo-multi-folder-divide-number-internal
+                    ,folder))))
 
 (luna-define-method elmo-folder-initialize ((folder
                                             elmo-multi-folder)
     (when (cdr element)
       (elmo-folder-recover-messages (car element) (cdr element)))))
 
+(defun elmo-folder-append-messages-multi-* (dst-folder
+                                           src-folder
+                                           numbers
+                                           same-number)
+  (if same-number
+      (elmo-folder-append-messages dst-folder src-folder numbers same-number
+                                  'elmo-folder-append-messages-multi-*)
+    (let ((divider (elmo-multi-folder-divide-number-internal src-folder))
+         (cur-number 0)
+         succeeds)
+      (dolist (element (elmo-multi-split-numbers src-folder numbers))
+       (setq cur-number (+ cur-number 1))
+       (when (cdr element)
+         (setq succeeds
+               (nconc
+                succeeds
+                (mapcar
+                 (lambda (x)
+                   (+ (* divider cur-number) x))
+                 (elmo-folder-append-messages
+                  dst-folder (car element) (cdr element)))))))
+      succeeds)))
+
 (require 'product)
 (product-provide (provide 'elmo-multi) (require 'elmo-version))