:group 'notmuch-send
:group 'notmuch-external)
+(defcustom notmuch-address-selection-function 'notmuch-address-selection-function
+ "The function to select address from given list. The function is
+called with PROMPT, COLLECTION, and INITIAL-INPUT as arguments
+(subset of what `completing-read' can be called with).
+While executed the value of `completion-ignore-case' is t.
+See documentation of function `notmuch-address-selection-function'
+to know how address selection is made by default."
+ :type 'function
+ :group 'notmuch-send
+ :group 'notmuch-external)
+
+(defun notmuch-address-selection-function (prompt collection initial-input)
+ "Call (`completing-read'
+ PROMPT COLLECTION nil nil INITIAL-INPUT 'notmuch-address-history)"
+ (completing-read
+ prompt collection nil nil initial-input 'notmuch-address-history))
+
(defvar notmuch-address-message-alist-member
'("^\\(Resent-\\)?\\(To\\|B?Cc\\|Reply-To\\|From\\|Mail-Followup-To\\|Mail-Copies-To\\):"
. notmuch-address-expand-name))
((eq num-options 1)
(car options))
(t
- (completing-read (format "Address (%s matches): " num-options)
- (cdr options) nil nil (car options)
- 'notmuch-address-history)))))
+ (funcall notmuch-address-selection-function
+ (format "Address (%s matches): " num-options)
+ (cdr options) (car options))))))
(if chosen
(progn
(push chosen notmuch-address-history)
(when (notmuch-address-locate-command notmuch-address-command)
(notmuch-address-message-insinuate))
-;; functions to add sender / recipients to BBDB
-
-(defun notmuch-bbdb/snarf-headers (headers)
- ;; Helper function to avoid code duplication in the two below
- ;; headers should have the same format as bbdb-get-addresses-headers
-
- ;; bbdb-get-addresses reads these
- ;; Ugh, pass-by-global
- (let ((addrs (bbdb-get-addresses nil nil 'notmuch-bbdb/get-header-content))
- (bbdb-get-addresses-headers headers) ; headers to read
- (bbdb-gag-messages t)) ; suppress m/n processed message)
- (bbdb-update-records addrs t t))
-
- (defun notmuch-bbdb/snarf-from ()
- "Import the sender of the current message into BBDB"
- (interactive)
- (notmuch-bbdb/snarf-headers
- (list (assoc 'authors bbdb-get-addresses-headers))))
-
-(defun notmuch-bbdb/snarf-to ()
- "Import all recipients of the current message into BBDB"
- (interactive)
- (notmuch-bbdb/snarf-headers
- (list (assoc 'recipients bbdb-get-addresses-headers))))
-
-(defvar notmuch-bbdb/header-by-name
- ;; both are case sensitive
- '( ("From" . :From)
- ("To" . :To)
- ("CC" . :Cc)
- ("BCC" . :Bcc)
- ("Resent-From" . nil)
- ("Reply-To" . nil)
- ("Resent-To" . nil)
- ("Resent-CC" . nil))
- "Alist for dispatching header symbols as used by notmuch-show-get-header
-from strings as used by bbdb-get-addresses")
-
-(defun notmuch-bbdb/get-header-content (name)
- (notmuch-show-get-header (cdr (assoc name notmuch-bbdb/header-by-name))))
-
;;
(provide 'notmuch-address)