X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=wl%2Fwl-refile.el;h=b128365251a56ea106f938ea5914ed0b96026ce1;hb=3a01a2ef6029f0514b65124627d93a2cfba484f7;hp=feb828239ec14d3f2a3d850b9eba3b120fa91ac6;hpb=24a35b7756aa45237a601927b811c99e3eb5e550;p=elisp%2Fwanderlust.git diff --git a/wl/wl-refile.el b/wl/wl-refile.el index feb8282..b128365 100644 --- a/wl/wl-refile.el +++ b/wl/wl-refile.el @@ -40,6 +40,8 @@ (defvar wl-refile-subject-alist nil) (defvar wl-refile-subject-alist-file-name "refile-subject-alist") +(defvar wl-refile-default-from-folder-path-separator "/") + (defvar wl-refile-alist-max-length 1000) (defun wl-refile-alist-setup () @@ -148,15 +150,17 @@ '(wl-refile-guess-by-rule wl-refile-guess-by-msgid wl-refile-guess-by-subject - wl-refile-guess-by-history) + wl-refile-guess-by-history + wl-refile-guess-by-from) "*Functions in this list are used for guessing refile destination folder.") ;; 2000-11-05: *-func-list -> *-functions (elmo-define-obsolete-variable 'wl-refile-guess-func-list 'wl-refile-guess-functions) -(defun wl-refile-guess (entity) - (let ((flist wl-refile-guess-functions) guess) +(defun wl-refile-guess (entity &optional functions) + (let ((flist (or functions wl-refile-guess-functions)) + guess) (while flist (if (setq guess (funcall (car flist) entity)) (setq flist nil) @@ -216,19 +220,15 @@ If RULE does not match ENTITY, returns nil." (downcase (wl-address-header-extract-address entity)))) (wl-parse-addresses (concat - (elmo-msgdb-overview-entity-get-to entity) "," - (elmo-msgdb-overview-entity-get-cc entity))))) + (elmo-message-entity-field entity 'to) "," + (elmo-message-entity-field entity 'cc))))) ret-val) - (setq tocc-list (elmo-list-delete - (or wl-user-mail-address-list - (list (wl-address-header-extract-address wl-from))) - tocc-list)) + (setq tocc-list (wl-address-delete-user-mail-addresses tocc-list)) (while tocc-list (if (setq ret-val (cdr (assoc (car tocc-list) wl-refile-alist))) (setq tocc-list nil) (setq tocc-list (cdr tocc-list)))) - (or ret-val - (wl-refile-guess-by-from entity)))) + ret-val)) (defun wl-refile-get-account-part-from-address (address) (if (string-match "\\([^@]+\\)@[^@]+" address) @@ -236,16 +236,21 @@ If RULE does not match ENTITY, returns nil." address)) (defun wl-refile-guess-by-from (entity) - (let ((from - (downcase (wl-address-header-extract-address - (elmo-msgdb-overview-entity-get-from entity))))) + (let ((from (downcase (wl-address-header-extract-address + (elmo-message-entity-field entity 'from)))) + (folder (elmo-make-folder wl-refile-default-from-folder)) + (elmo-path-sep wl-refile-default-from-folder-path-separator)) ;; search from alist (or (cdr (assoc from wl-refile-alist)) - (format "%s/%s" wl-refile-default-from-folder - (wl-refile-get-account-part-from-address from))))) + (concat + (elmo-folder-prefix-internal folder) + (elmo-concat-path + (substring wl-refile-default-from-folder + (length (elmo-folder-prefix-internal folder))) + (wl-refile-get-account-part-from-address from)))))) (defun wl-refile-guess-by-msgid (entity) - (cdr (assoc (elmo-msgdb-overview-entity-get-references entity) + (cdr (assoc (elmo-message-entity-field entity 'references) wl-refile-msgid-alist))) (defun wl-refile-guess-by-subject (entity)