* wl-summary.el (wl-summary-buffer-message-redisplay-func): Removed.
[elisp/wanderlust.git] / elmo / elmo-internal.el
index b9de021..75415fb 100644 (file)
                                            name)
   (elmo-internal-folder-initialize folder name))
 
+(defvar elmo-internal-folder-list '(mark cache))
+
 (defun elmo-internal-folder-initialize (folder name)
-  (cond ((string-match "^mark" name)
-        (require 'elmo-mark)
-        (elmo-folder-initialize
-         (luna-make-entity
-          'elmo-mark-folder
-          :type 'mark
-          :prefix (elmo-folder-prefix-internal folder)
-          :name (elmo-folder-name-internal folder)
-          :persistent (elmo-folder-persistent-internal folder))
-         name))
-       ((string-match "^cache" name)
-        (require 'elmo-cache)
-        ;; XXX FIXME: elmo-cache-folder initialization
-        folder)
-       (t folder)))
+  (let ((fsyms elmo-internal-folder-list)
+       fname class sym)
+    (if (progn (while fsyms
+                (setq fname (symbol-name (car fsyms)))
+                (when (string-match (concat "^" fname) name)
+                  (require (intern (concat "elmo-" fname)))
+                  (setq class (intern (concat "elmo-" fname "-folder"))
+                        sym (intern fname)
+                        fsyms nil))
+                (setq fsyms (cdr fsyms)))
+              class)
+       (elmo-folder-initialize
+        (luna-make-entity
+         class
+         :type sym
+         :prefix (elmo-folder-prefix-internal folder)
+         :name (elmo-folder-name-internal folder)
+         :persistent (elmo-folder-persistent-internal folder))
+        name)
+      folder)))
 
 (luna-define-method elmo-folder-list-subfolders ((folder elmo-internal-folder)
                                                 &optional one-level)
-  (list (list "'cache") "'mark"))
+  (mapcar
+   (lambda (x)
+     (if (elmo-folder-have-subfolder-p
+         (elmo-make-folder
+          (concat (elmo-folder-prefix-internal folder)
+                  (symbol-name x))))
+        (list (concat (elmo-folder-prefix-internal folder)
+                      (symbol-name x)))
+       (concat (elmo-folder-prefix-internal folder)
+              (symbol-name x))))
+   elmo-internal-folder-list))
 
 (require 'product)
 (product-provide (provide 'elmo-internal) (require 'elmo-version))