+(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)))
+
+(luna-define-method elmo-folder-synchronize ((folder elmo-pipe-folder)
+ &optional
+ disable-killed
+ ignore-msgdb
+ no-check)
+ (let ((src-folder (elmo-pipe-folder-src-internal folder))
+ (dst-folder (elmo-pipe-folder-dst-internal folder)))
+ (when (and (elmo-folder-plugged-p src-folder)
+ (elmo-folder-plugged-p dst-folder))
+ (if (elmo-pipe-folder-copy-internal folder)
+ (elmo-pipe-folder-copied-list-save
+ folder
+ (elmo-pipe-drain src-folder
+ dst-folder
+ 'copy
+ (elmo-pipe-folder-copied-list-load folder)))
+ (elmo-pipe-drain src-folder dst-folder))))
+ (elmo-folder-synchronize
+ (elmo-pipe-folder-dst-internal folder)
+ disable-killed ignore-msgdb no-check))
+
+(luna-define-method elmo-folder-list-flagged ((folder elmo-pipe-folder)
+ flag
+ &optional in-msgdb)
+ (elmo-folder-list-flagged
+ (elmo-pipe-folder-dst-internal folder) flag in-msgdb))
+
+(luna-define-method elmo-folder-commit ((folder elmo-pipe-folder))
+ (elmo-folder-commit (elmo-pipe-folder-dst-internal folder)))
+
+(luna-define-method elmo-folder-length ((folder elmo-pipe-folder))
+ (elmo-folder-length (elmo-pipe-folder-dst-internal folder)))
+
+(luna-define-method elmo-folder-count-flags ((folder elmo-pipe-folder))
+ (elmo-folder-count-flags (elmo-pipe-folder-dst-internal folder)))
+
+(luna-define-method elmo-message-flags ((folder elmo-pipe-folder) number)
+ (elmo-message-flags (elmo-pipe-folder-dst-internal folder) number))
+
+(luna-define-method elmo-message-field ((folder elmo-pipe-folder)
+ number field)
+ (elmo-message-field (elmo-pipe-folder-dst-internal folder)
+ number
+ field))
+
+(luna-define-method elmo-message-set-cached ((folder elmo-pipe-folder)
+ number cached)
+ (elmo-message-set-cached (elmo-pipe-folder-dst-internal folder)
+ number cached))
+
+(luna-define-method elmo-find-fetch-strategy
+ ((folder elmo-pipe-folder) entity &optional ignore-cache)
+ (elmo-find-fetch-strategy (elmo-pipe-folder-dst-internal folder)
+ (elmo-message-entity
+ (elmo-pipe-folder-dst-internal folder)
+ (elmo-message-entity-number entity))
+ ignore-cache))
+
+(luna-define-method elmo-message-entity ((folder elmo-pipe-folder) key)
+ (elmo-message-entity (elmo-pipe-folder-dst-internal folder) key))
+
+(luna-define-method elmo-message-folder ((folder elmo-pipe-folder)
+ number)
+ (elmo-pipe-folder-dst-internal folder))
+