X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=wl%2Fwl-address.el;h=2d9f845d9205a751ddd81d1c1a47a93060141019;hb=aedb114b8b1917d3e0d96cb19ed4a9d6f958ae1a;hp=ecdbc226d10aceb36b202f48be4eb3d14555437b;hpb=7217e70583c4476c039f9448e74165371bed59ec;p=elisp%2Fwanderlust.git diff --git a/wl/wl-address.el b/wl/wl-address.el index ecdbc22..2d9f845 100644 --- a/wl/wl-address.el +++ b/wl/wl-address.el @@ -37,7 +37,7 @@ (require 'wl-vars) (require 'std11) -(defvar wl-address-complete-header-list +(defvar wl-address-complete-header-list '("To:" "From:" "Cc:" "Bcc:" "Mail-Followup-To:" "Reply-To:" "Return-Receipt-To:")) (defvar wl-address-complete-header-regexp nil) ; auto-generated. @@ -524,7 +524,7 @@ Refresh `wl-address-list', `wl-address-completion-list', and (wl-address-expand-aliases alist (1+ nest-count)))))) (defun wl-address-make-alist-from-alias-file (file) - (elmo-set-work-buf + (with-temp-buffer (let ((case-fold-search t) alias expn alist) (insert-file-contents file) @@ -542,23 +542,23 @@ Refresh `wl-address-list', `wl-address-completion-list', and ))) (defun wl-address-make-address-list (path) - (if (and path (file-readable-p path)) - (elmo-set-work-buf - (let (ret - (coding-system-for-read wl-cs-autoconv)) - (insert-file-contents path) - (goto-char (point-min)) - (while (not (eobp)) - (if (looking-at - "^\\([^#\n][^ \t\n]+\\)[ \t]+\\(\".*\"\\)[ \t]+\\(\".*\"\\)[ \t]*.*$") - (setq ret - (cons - (list (wl-match-buffer 1) - (read (wl-match-buffer 2)) - (read (wl-match-buffer 3))) - ret))) - (forward-line)) - (nreverse ret))))) + (when (and path (file-readable-p path)) + (with-temp-buffer + (let (ret + (coding-system-for-read wl-cs-autoconv)) + (insert-file-contents path) + (goto-char (point-min)) + (while (not (eobp)) + (if (looking-at "\ +^\\([^#\n][^ \t\n]+\\)[ \t]+\\(\".*\"\\)[ \t]+\\(\".*\"\\)[ \t]*.*$") + (setq ret + (cons + (list (wl-match-buffer 1) + (read (wl-match-buffer 2)) + (read (wl-match-buffer 3))) + ret))) + (forward-line)) + (nreverse ret))))) (defsubst wl-address-header-extract-address (str) @@ -592,23 +592,32 @@ e.g. \"Mr. bar \" (defun wl-address-user-mail-address-p (address) "Judge whether ADDRESS is user's or not." - (member (downcase (wl-address-header-extract-address address)) - (or (mapcar 'downcase wl-user-mail-address-list) - (list (downcase - (wl-address-header-extract-address - wl-from)))))) + (if wl-user-mail-address-regexp + (string-match wl-user-mail-address-regexp + (wl-address-header-extract-address address)) + (member (downcase (wl-address-header-extract-address address)) + (or (mapcar 'downcase wl-user-mail-address-list) + (list (downcase + (wl-address-header-extract-address + wl-from))))))) (defun wl-address-delete-user-mail-addresses (address-list) "Delete user mail addresses from list by side effect. Deletion is done by using `elmo-list-delete'." - (let ((myself (or wl-user-mail-address-list - (list (wl-address-header-extract-address wl-from))))) - (elmo-list-delete myself address-list - (lambda (elem list) - (elmo-delete-if - (lambda (item) (string= (downcase elem) - (downcase item))) - list))))) + (if wl-user-mail-address-regexp + (elmo-list-delete (list wl-user-mail-address-regexp) address-list + (lambda (elem list) + (elmo-delete-if + (lambda (item) (string-match elem item)) + list))) + (let ((myself (or wl-user-mail-address-list + (list (wl-address-header-extract-address wl-from))))) + (elmo-list-delete myself address-list + (lambda (elem list) + (elmo-delete-if + (lambda (item) (string= (downcase elem) + (downcase item))) + list)))))) (defmacro wl-address-concat-token (string token) (` (cond @@ -724,6 +733,31 @@ If already registerd, change it." (wl-address-init) (list (or new-addr address) the-petname the-realname))))) +;; Read addresses from minibuffer with completion. +(defvar wl-address-minibuffer-history nil) +(defvar wl-address-minibuffer-local-map nil + "Keymap to use when reading address from the minibuffer.") + +(unless wl-address-minibuffer-local-map + (let ((map (make-sparse-keymap))) + (set-keymap-parent map minibuffer-local-map) + (define-key map "\C-i" + (lambda () + (interactive) + (wl-complete-field-body wl-address-completion-list + ?@ nil wl-use-ldap))) + (setq wl-address-minibuffer-local-map map))) + +(defun wl-address-read-from-minibuffer (prompt &optional + initial-contents + default-value) + (read-from-minibuffer prompt + initial-contents + wl-address-minibuffer-local-map + nil + 'wl-address-minibuffer-history + default-value)) + (require 'product) (product-provide (provide 'wl-address) (require 'wl-version))