Subject: RE: bug#21644: 24.4; completing-read acts differently on functional collection

From: Drew Adams <[email-masked]>
Date: Thu, 15 Oct 2015 08:01:03 -0700 (PDT)

> >> (info "(elisp) Programmed Completion") or
> >> (info "(elisp) Basic Completion"), probably.
> > Maybe the `completing-read' docstring should link to these info nodes.
> 
> This seems like it should suffice. Do you agree?
> +See Info node `(elisp)Basic Completion' for more details
>    on completion, COLLECTION, and PREDICATE.

Yes and no, IMO.  `Basic Completion' certainly provides
some information about "completion, COLLECTION, and
PREDICATE."  But for 3 other functions, not explicitly
for `completing-read' - it is not even mentioned there.

To understand COLLECTION for `completing-read', that node
not the best place to go.

As was suggested earlier (see above), node `Programmed
Completion' is where we should send someone for information
about a function-valued COLLECTION argument.

It doesn't hurt to send them to both nodes or to only
their parent, `Completion'.  But it is not clear to me
that someone trying to use `completing-read' with a
function-valued COLLECTION will understand what is
needed just from `Basic Completion'.

Especially since the `completing-read' doc string
mentions only `all-completions' and `try-completion',
not `test-completion' (which is OK): Someone going to
`Basic Completion' to find out more about parameter
COLLECTION for  `completing-read' is likely to miss
the description of COLLECTION for `test-completion'
or to think that it is not relevant.

A priori, there is nothing that necessarily connects
the COLLECTION parameter of `completing-read' with
the COLLECTION parameters of those 3 more-basic
functions, or even that connects those 3 COLLECTION
parameters.  That is, just giving them the same
name is not sufficient to specify that they are the
same.

Just saying to go see `Basic Completion' for info
about COLLECTION etc. _suggests_ that there is a
connection, but, again, that doesn't mean that
someone will see the relevance of `test-completion'
here.