emacs/notmuch-address.el: add notmuch-address-selection-function

Added a customizable variable notmuch-address-selection-function
and the function with the same name to provide a way for user to
change the function called to do address selection.

By default the functionality is exactly the same as it has been so
far; completing-read is called with the same parameters as before.

Setting equivalent lambda expression in place of using
notmuch-address-selection-function function is done as follows:

(setq notmuch-address-selection-function
   (lambda (prompt collection initial-input)
     (completing-read prompt collection nil nil initial-input)))

For example drop-in replacement with ido-completing-read can be done
easily as an one alternative to the default.
This commit is contained in:
Tomi Ollila 2013-04-03 18:08:54 +03:00 committed by David Bremner
parent 9641fe1ce7
commit 72dcfede51

View file

@ -31,6 +31,23 @@ line."
: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))
@ -61,9 +78,9 @@ line."
((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)