* elmo-pop3.el (elmo-folder-open-internal): Don't load location map if
[elisp/wanderlust.git] / elmo / elmo-internal.el
index feb3be1..afe65ab 100644 (file)
 ;;; ELMO internal folder
 (luna-define-class elmo-internal-folder (elmo-folder) ())
 
+(defvar elmo-internal-folder-list '(flag cache sendlog null))
+(defvar elmo-internal-obsolete-folder-list '((mark flag)))
+
 (luna-define-method elmo-folder-initialize ((folder
                                             elmo-internal-folder)
                                            name)
+  (when (assq (intern name) elmo-internal-obsolete-folder-list)
+    (elmo-warning
+     "Folder '%s is now obsolete. Use '%s instead."
+     name
+     (cadr (assq (intern name) elmo-internal-obsolete-folder-list))))
   (elmo-internal-folder-initialize folder name))
 
-(defvar elmo-internal-folder-list '(flag cache sendlog))
-
 (defun elmo-internal-folder-initialize (folder name)
   (let ((fsyms elmo-internal-folder-list)
        fname class sym)
          :type sym
          :prefix (elmo-folder-prefix-internal folder)
          :name (elmo-folder-name-internal folder)
-         :persistent (elmo-folder-persistent-internal folder))
+         :persistent (elmo-folder-persistent-internal folder)
+         :mime-charset (elmo-folder-mime-charset-internal folder))
         name)
       folder)))
 
 (luna-define-method elmo-folder-list-subfolders ((folder elmo-internal-folder)
                                                 &optional one-level)
-  (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))
+  (if one-level
+      (mapcar
+       (lambda (x)
+        (let ((name (concat (elmo-folder-prefix-internal folder)
+                            (symbol-name x))))
+          (if (elmo-folder-have-subfolder-p (elmo-get-folder name))
+              (list name)
+            name)))
+       elmo-internal-folder-list)
+    (apply #'nconc
+          (mapcar
+           (lambda (x)
+             (let* ((name (concat (elmo-folder-prefix-internal folder)
+                                  (symbol-name x)))
+                    (subfolder (elmo-get-folder name)))
+               (if (elmo-folder-have-subfolder-p subfolder)
+                   (elmo-folder-list-subfolders subfolder)
+                 (list name))))
+           elmo-internal-folder-list))))
 
 (require 'product)
 (product-provide (provide 'elmo-internal) (require 'elmo-version))