+(defun wl-folder-get-newsgroups (folder)
+ "Return Newsgroups field value string for FOLDER newsgroup.
+If FOLDER is multi, return comma separated string (cross post)."
+ (let ((nlist (elmo-folder-newsgroups
+ (wl-folder-get-elmo-folder folder))))
+ (if nlist
+ (list nil nil (mapconcat 'identity nlist ","))
+ nil)))
+
+(defun wl-folder-guess-mailing-list-by-refile-rule (entity)
+ "Return ML address guess by ENTITY.
+Use `wl-subscribed-mailing-list' and `wl-refile-rule-alist'."
+ (let ((flist
+ (elmo-folder-get-primitive-list
+ (wl-folder-get-elmo-folder entity)))
+ fld mladdr to)
+ (while (setq fld (car flist))
+ (setq mladdr (wl-folder-guess-mailing-list-by-refile-rule-subr
+ (elmo-folder-name-internal fld)))
+ (when mladdr
+ (setq to (if (stringp to)
+ (concat to ", " mladdr)
+ mladdr)))
+ (setq flist (cdr flist)))
+ (if (stringp to)
+ (list to nil nil)
+ nil)))
+
+(defun wl-folder-guess-mailing-list-by-refile-rule-subr (entity)
+ (unless (memq (elmo-folder-type entity)
+ '(localnews nntp))
+ (let ((rules wl-refile-rule-alist)
+ tokey toalist)
+ (while rules
+ (if (or (and (stringp (car (car rules)))
+ (string-match "[Tt]o" (car (car rules))))
+ (and (listp (car (car rules)))
+ (elmo-string-matched-member "to" (car (car rules))
+ 'case-ignore)))
+ (setq toalist (append toalist (cdr (car rules)))))
+ (setq rules (cdr rules)))
+ (setq tokey (car (rassoc entity toalist)))
+;;; (setq histkey (car (rassoc folder wl-refile-alist)))
+ ;; case-ignore search `wl-subscribed-mailing-list'
+ (if (stringp tokey)
+ (elmo-string-matched-member tokey wl-subscribed-mailing-list t)))))
+
+(defun wl-folder-guess-mailing-list-by-folder-name (entity)
+ "Return ML address guess by ENTITY name's last hierarchy.
+Use `wl-subscribed-mailing-list'."
+ (let ((flist
+ (elmo-folder-get-primitive-list
+ (wl-folder-get-elmo-folder entity)))
+ fld mladdr to)
+ (while (setq fld (car flist))
+ (setq mladdr (wl-folder-guess-mailing-list-by-folder-name-subr
+ (elmo-folder-name-internal fld)))
+ (when mladdr
+ (setq to (if (stringp to)
+ (concat to ", " mladdr)
+ mladdr)))
+ (setq flist (cdr flist)))
+ (if (stringp to)
+ (list to nil nil)
+ nil)))
+
+(defun wl-folder-guess-mailing-list-by-folder-name-subr (entity)
+ (when (memq (elmo-folder-type entity)
+ '(localdir imap4 maildir))
+ (let (key foldername)
+ ;; Get foldername and Remove folder type symbol.
+ (setq foldername (substring entity 1))
+ (if (string-match "@" foldername)
+ (setq foldername (substring foldername 0 (match-beginning 0))))
+ (when (string-match "[^\\./]+$" foldername)
+ (setq key (regexp-quote
+ (concat (substring foldername (match-beginning 0)) "@")))
+ (elmo-string-matched-member
+ key wl-subscribed-mailing-list 'case-ignore)))))
+