-(defun wl-folder-confirm-existence (fld &optional ignore-error)
- (if (or (wl-folder-entity-exists-p fld)
- (file-exists-p (elmo-msgdb-expand-path fld)))
- ()
- (if ignore-error
- (condition-case nil
- (if (elmo-folder-exists-p fld)
- ()
- (if (elmo-folder-creatable-p fld)
- (if (y-or-n-p
- (format "Folder %s does not exist, create it?" fld))
- (progn
- (setq wl-folder-entity-hashtb
- (wl-folder-create-entity-hashtb
- fld
- wl-folder-entity-hashtb))
- (elmo-create-folder fld)))))
- (error))
- (if (elmo-folder-exists-p fld)
- ()
- (if (not (elmo-folder-creatable-p fld))
- (error "Folder %s is not found" fld)
- (if (y-or-n-p
- (format "Folder %s does not exist, create it?" fld))
- (progn
- (setq wl-folder-entity-hashtb
- (wl-folder-create-entity-hashtb
- fld
- wl-folder-entity-hashtb))
- (unless (elmo-create-folder fld)
- (error "Create folder failed")))
- (error "Folder is not created")))))))
-
-(provide 'wl-folder)
+(defun wl-folder-create-subr (folder)
+ (if (elmo-folder-creatable-p folder)
+ (if (y-or-n-p (format "Folder %s does not exist, create it? "
+ (elmo-folder-name-internal folder)))
+ (progn
+ (message "")
+ (setq wl-folder-entity-hashtb
+ (wl-folder-create-entity-hashtb
+ (elmo-folder-name-internal folder)
+ wl-folder-entity-hashtb))
+ (unless (elmo-folder-create folder)
+ (error "Create folder failed")))
+ (error "Folder %s is not created" (elmo-folder-name-internal folder)))
+ (error "Folder %s does not exist" (elmo-folder-name-internal folder))))
+
+(defun wl-folder-confirm-existence (folder &optional force)
+ (if force
+ (unless (elmo-folder-exists-p folder)
+ (wl-folder-create-subr folder))
+ (unless (or (wl-folder-entity-exists-p (elmo-folder-name-internal folder))
+ (file-exists-p (elmo-folder-msgdb-path folder))
+ (elmo-folder-exists-p folder))
+ (wl-folder-create-subr folder))))
+
+(defun wl-folder-virtual ()
+ "Goto virtual folder."
+ (interactive)
+ (let ((entity (wl-folder-get-entity-from-buffer)))
+ (if (wl-folder-buffer-group-p)
+ (setq entity
+ (concat
+ "*"
+ (mapconcat 'identity
+ (wl-folder-get-entity-list
+ (wl-folder-search-group-entity-by-name
+ entity
+ wl-folder-entity)) ","))))
+ (unless entity (error "No folder"))
+ (wl-folder-goto-folder-subr
+ (concat "/"
+ (elmo-read-search-condition
+ wl-fldmgr-make-filter-default)
+ "/" entity))))
+
+(defun wl-folder-pick ()
+ (interactive)
+ (save-excursion
+ (let* ((condition (car (elmo-parse-search-condition
+ (elmo-read-search-condition
+ wl-summary-pick-field-default))))
+ (entity (wl-folder-get-entity-from-buffer))
+ (folder-list
+ (if (wl-folder-buffer-group-p)
+ (wl-folder-get-entity-list
+ (wl-folder-search-group-entity-by-name
+ entity
+ wl-folder-entity))
+ (list entity)))
+ results ret)
+ (while (car folder-list)
+ (setq ret (elmo-folder-search
+ (wl-folder-get-elmo-folder (car folder-list))
+ condition))
+ (if ret
+ (setq results
+ (append results
+ (list (cons (car folder-list) ret)))))
+ (setq folder-list (cdr folder-list)))
+ (if results
+ (message "%s are picked."
+ (mapconcat '(lambda (res)
+ (format "%s(%d)"
+ (car res)
+ (length (cdr res))))
+ results
+ ","))
+ (message "No message was picked.")))))
+
+(defun wl-folder-jump-to-next-summary ()
+ (interactive)
+ (when (wl-collect-summary)
+ (if (get-buffer-window (car (wl-collect-summary)))
+ (switch-to-buffer-other-window (car (wl-collect-summary))))
+ (wl-summary-next-buffer)))
+
+(defun wl-folder-jump-to-previous-summary ()
+ (interactive)
+ (when (wl-collect-summary)
+ (if (get-buffer-window (car (wl-collect-summary)))
+ (switch-to-buffer-other-window (car (wl-collect-summary))))
+ (wl-summary-previous-buffer)))
+
+(require 'product)
+(product-provide (provide 'wl-folder) (require 'wl-version))