Address completion in Emacs

Lele Gaifax lele at metapensiero.it
Fri Dec 12 00:22:56 PST 2014


Hi all,

Yesterday I tweaked my Emacs configuration to use "ido-completing-read"
to select the right address in the minibuffer, and noticed what seems a
glitch in the related code.

To accomplish the goal, I implemented my own selection function

  (defun esk-notmuch-address-selection-function (prompt addresses first)
    "Use `ido-completing-read' to select one of the addresses."
    (ido-completing-read prompt (cons first addresses)
                         nil nil nil 'notmuch-address-history))

and then assigned it to `notmuch-address-selection-function':

  (setq notmuch-address-selection-function 'esk-notmuch-address-selection-function)

As you can see, I had to `cons' the two arguments, because the caller of
that function does something similar to the following (where `orig' is
the text entered before TAB-completion):

  (options (notmuch-address-options orig))
  (num-options (length options))
  (chosen (funcall notmuch-address-selection-function
              (format "Address (%s matches): " num-options)
              (cdr options) (car options)))

and the standard `notmuch-address-selection-function' is defined like:

  (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))

where that `initial-input' is not what I initially thought, the text
entered by the user, but rather the first completion candidate.

Wouldn't it be more "correct" to pass the unchanged `options' list and
the "real" `orig' text as `initial-input' to the customizable function
instead?

I understand that it may be undesiderable to break existing
configurations by rectifying the arguments in that way, and in such case
could we change the `initial-input' argument name to better reflect the
fact that it actually contains one possible candidate instead?

Thanks in advance for any clarification,
ciao, lele.
-- 
nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri
real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia.
lele at metapensiero.it  |                 -- Fortunato Depero, 1929.



More information about the notmuch mailing list