* elmo-archive.el (elmo-folder-delete): Added `:before' qualifier.
* elmo-maildir.el (elmo-folder-delete): Ditto.
* elmo-localdir.el (elmo-folder-delete): Ditto.
* elmo-imap4.el (elmo-folder-delete): Ditto.
+2001-12-23  Yuuichi Teranishi  <teranisi@gohome.org>
+
+       * elmo.el (elmo-folder-delete): Delete msgdb path.
+
+       * elmo-archive.el (elmo-folder-delete): Added `:before' qualifier.
+
+       * elmo-maildir.el (elmo-folder-delete): Ditto.
+
+       * elmo-localdir.el (elmo-folder-delete): Ditto.
+
+       * elmo-imap4.el (elmo-folder-delete): Ditto.
+
 2001-12-19  Yuuichi Teranishi  <teranisi@gohome.org>
 
        * elmo.el (luna-define-class): Added `biff' slot.
 
             (delete-file dummy)))
        ))))
 
-(luna-define-method elmo-folder-delete ((folder elmo-archive-folder))
+(luna-define-method elmo-folder-delete :before ((folder elmo-archive-folder))
   (let ((arc (elmo-archive-get-archive-name folder)))
     (if (not (file-exists-p arc))
        (error "No such file: %s" arc)
 
 (luna-define-method elmo-folder-writable-p ((folder elmo-imap4-folder))
   t)
 
-(luna-define-method elmo-folder-delete ((folder elmo-imap4-folder))
+(luna-define-method elmo-folder-delete :before ((folder elmo-imap4-folder))
   (let ((session (elmo-imap4-get-session folder))
        msgs)
     (when (elmo-imap4-folder-mailbox-internal folder)
 
        (elmo-make-directory dir))
       t)))
 
-(luna-define-method elmo-folder-delete ((folder elmo-localdir-folder))
+(luna-define-method elmo-folder-delete :before ((folder elmo-localdir-folder))
   (let ((dir (elmo-localdir-folder-directory-internal folder)))
     (if (not (file-directory-p dir))
        (error "No such directory: %s" dir)
 
          t)
       (error))))
 
-(luna-define-method elmo-folder-delete ((folder elmo-maildir-folder))
+(luna-define-method elmo-folder-delete :before ((folder elmo-maildir-folder))
   (let ((basedir (elmo-maildir-folder-directory-internal folder)))
     (condition-case nil
        (let ((tmp-files (directory-files
 
     (save-match-data
       (elmo-folder-send folder 'elmo-folder-initialize name))))
 
+(defun elmo-create-folder (class name &rest args)
+  (apply
+   'luna-make-entity
+   (intern (concat "elmo-" (symbol-name class) "-folder"))
+   :name name
+   args))
+
 (defmacro elmo-folder-msgdb (folder)
   "Return the msgdb of FOLDER (on-demand loading)."
   (` (or (elmo-folder-msgdb-internal (, folder))
 (luna-define-method elmo-folder-writable-p ((folder elmo-folder))
   nil) ; default is not writable.
 
+(luna-define-method elmo-folder-delete ((folder elmo-folder))
+  (elmo-msgdb-delete-path folder))
+
 (luna-define-method elmo-folder-rename ((folder elmo-folder) new-name)
   (let* ((new-folder (elmo-make-folder new-name)))
     (unless (eq (elmo-folder-type-internal folder)