Subject: bug#1085 closed by Chong Yidong <[email-masked]> (RE: bug#1085: 23.0.60; all-completions, try-completion inconsistent: Info-read-node-name-1)

From: [email-masked] (Emacs bug Tracking System)
Date: Sat, 15 Aug 2009 22:25:05 +0000

This is an automatic notification regarding your bug report
which was filed against the emacs package:

#1085: 23.0.60; all-completions, try-completion inconsistent: Info-read-node-name-1

It has been closed by Chong Yidong <[email-masked]>.

Their explanation is attached below along with your original report.
If this explanation is unsatisfactory and you have not received a
better one in a separate message then please contact Chong Yidong <[email-masked]> by
replying to this email.

-- 
1085: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=1085
Emacs Bug Tracking System
Contact [email-masked] with problems

Subject: RE: bug#1085: 23.0.60; all-completions, try-completion inconsistent: Info-read-node-name-1
From: Chong Yidong <[email-masked]>
To: [email-masked]
Date: Sat, 15 Aug 2009 18:19:04 -0400

Since discussion of this has come to a stop long ago, and there are no
planned changes to the new completion design, I'm closing this bug.
>From [email-masked] Sat Oct  4 15:58:19 2008
From: "Drew Adams" <[email-masked]>
To: <[email-masked]>
Subject: 23.0.60; all-completions, try-completion inconsistent: Info-read-node-name-1
Date: Sat, 4 Oct 2008 15:58:20 -0700

emacs -Q
C-h i
 
M-: (try-completion "(el" 'Info-read-node-name-1)
 
It returns "(elisp)", meaning that this is the common prefix of all
completions of "(el". [This is reasonable, and it satisfies the
requirement that "(el" is a prefix of "(elisp)".]
 
M-: (all-completions "(el" 'Info-read-node-name-1)
 
It returns ("elisp"), meaning that the only valid completion of "(el"
is "elisp". But "elisp" does not have the common prefix "(elisp)" as
determined by `try-completion', and "elisp" does not even have the
input "(el" as a prefix. This is inconsistent.  `all-completions'
should return ("(elisp)") in this case.
 
Lisp code needs to be able to depend on the fact that the valid
completions returned by `all-completions' have the common prefix
that is returned by `try-completion' (which must in turn have the
input as its prefix).

And each of the completions returned by `all-completions' must
also satisfy `test-completion'.  In particular,
(test-completion STRG (all-completions strg TABLE)) must always
return t, for all STRG and TABLE. In this case, for STRG = "(el" and
TABLE = `Info-read-node-name-1', it returns nil.

One should be able to use `all-completions' to construct a cons
completion table that is equivalent to the original TABLE argument,
regardless of how TABLE is defined (e.g. function, obarray).  That
is, when used with the same inputs it should have the same effect,
in particular for `try-completion', `all-completions', and
`test-completion'.

I don't know if this is a bug for Info-read-node-name-1 (or -2) or a
bug for one of the `minibuffer.el' functions that it uses.  The code
is a bit hard to follow.

In GNU Emacs 23.0.60.1 (i386-mingw-nt5.1.2600)
 of 2008-10-03 on LENNART-69DE564
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (3.4) --no-opt --cflags -Ic:/g/include
-fno-crossjumping'