X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=wl%2Fwl-addrmgr.el;h=aaada7c3d196ea74a40108878054d9dbd89b7b11;hb=62345218eb5ad2b29ace6731bbddf1d3fe787c3c;hp=ab9731179d3f5d61102dc7ce2461a17ce18b89b1;hpb=263f51a0c48da96a7840643fd64287b00a1db60b;p=elisp%2Fwanderlust.git diff --git a/wl/wl-addrmgr.el b/wl/wl-addrmgr.el index ab97311..aaada7c 100644 --- a/wl/wl-addrmgr.el +++ b/wl/wl-addrmgr.el @@ -169,7 +169,32 @@ See info under Wanderlust for full documentation. (lambda (addr) (nth 1 (std11-extract-address-components addr))) (wl-parse-addresses - (mapconcat 'identity (elmo-multiple-fields-body-list (list field)) ",")))) + (mapconcat + 'identity + (elmo-multiple-fields-body-list (list field) mail-header-separator) + ",")))) + +(defun wl-addrmgr-pickup-entry-list (buffer) + "Return a list of address entiry from BUFFER." + (when buffer + (with-current-buffer buffer + (mapcar + (lambda (addr) + (let ((structure (std11-extract-address-components addr))) + (list (cadr structure) + (or (car structure) "") + (or (car structure) "")))) + (wl-parse-addresses + (mapconcat + 'identity + (elmo-multiple-fields-body-list '("to" "cc" "bcc")) ",")))))) + +(defun wl-addrmgr-merge-entries (base-list append-list) + "Return a merged list of address entiry." + (dolist (entry append-list) + (unless (assoc (car entry) base-list) + (setq base-list (nconc base-list (list entry))))) + base-list) ;;;###autoload (defun wl-addrmgr () @@ -201,7 +226,9 @@ See info under Wanderlust for full documentation. (unless wl-addrmgr-sort-order (setq wl-addrmgr-sort-order wl-addrmgr-default-sort-order)) (setq wl-addrmgr-draft-buffer buffer) - (setq wl-addrmgr-list (wl-addrmgr-list)) + (setq wl-addrmgr-list + (wl-addrmgr-merge-entries (wl-addrmgr-list) + (wl-addrmgr-pickup-entry-list buffer))) (wl-addrmgr-draw already-list) (setq wl-addrmgr-unknown-list already-list) (wl-addrmgr-goto-top))) @@ -622,8 +649,8 @@ Return nil if no ADDRESS exists." (when (or (null wl-addrmgr-draft-buffer) (not (buffer-live-p wl-addrmgr-draft-buffer))) (setq wl-addrmgr-draft-buffer (save-window-excursion - (wl-draft) - (current-buffer)))) + (call-interactively 'wl-draft) + (current-buffer)))) (with-current-buffer wl-addrmgr-draft-buffer (setq from (std11-field-body "From")) (if from