GNU bug report logs -
#1085
23.0.60; all-completions, try-completion inconsistent: Info-read-node-name-1
Previous Next
Full log
View this message in rfc822 format
> From: Drew Adams Sent: Saturday, October 04, 2008 3:58 PM
>
> 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'
FWIW, Emacs 22 also has the same problem, albeit differently:
(try-completion "(el" 'Info-read-node-name-1) -> "(elisp"
(all-completions "(el" 'Info-read-node-name-1) -> ("elisp")
So the problem is likely not with the `minibuffer.el' code.
In GNU Emacs 22.3.1 (i386-mingw-nt5.1.2600)
of 2008-09-06 on SOFT-MJASON
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (3.4)'
This bug report was last modified 15 years and 343 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.