unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Substring matching for info index command
@ 2014-12-07 12:15 Tom
  2014-12-07 14:06 ` Drew Adams
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Tom @ 2014-12-07 12:15 UTC (permalink / raw)
  To: help-gnu-emacs

I've never used the builtin completion-styles, because I 
use other completion packages, but I thought I give it a try
and try substring matching for the info index command.

I added this advice to the command which wraps it in a
let and sets completion-styles to substring:

(defadvice Info-index (around my-Info-index activate)
  (let ((completion-styles '(substring)))
    ad-do-it))


However, it has no effect, it still uses the prefix
completion style. Why is that?





^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: Substring matching for info index command
  2014-12-07 12:15 Substring matching for info index command Tom
@ 2014-12-07 14:06 ` Drew Adams
  2014-12-07 14:16   ` Tom
  2014-12-07 15:56 ` Eli Zaretskii
  2014-12-07 16:02 ` Stefan Monnier
  2 siblings, 1 reply; 6+ messages in thread
From: Drew Adams @ 2014-12-07 14:06 UTC (permalink / raw)
  To: Tom, help-gnu-emacs

> I've never used the builtin completion-styles, because I
> use other completion packages, but I thought I give it a try
> and try substring matching for the info index command.
> 
> I added this advice to the command which wraps it in a
> let and sets completion-styles to substring:
> 
> (defadvice Info-index (around my-Info-index activate)
>   (let ((completion-styles '(substring)))
>     ad-do-it))
> 
> However, it has no effect, it still uses the prefix
> completion style. Why is that?

The reason is that `Info-index' uses your input not only
to match against the possible completions but also (and
first) to come up with (calculate/find) the possible
completions.

And when it uses your input to gather the possible
completions it simply searches the indexes of the manual
for your input, prefixed by `* '.

In other words, the problem is not with completion; it is
with the way `Info-index' gathers the completion candidates
from the indexes.  It does that by simply searching for
your input, as a prefix (prepended by `* ', which is what
is on the index-entry line in the index.

For example, in the Emacs manual, node `Command Index',
there is an entry that looks like this:

* ask-user-about-lock

When you type `user' as input, `Info-index' searches all
of the indexes for this regexp:

"
\\* +\\([^
]*\\(user\\)[^
]*\\):[ 	]+\\([^
]*\\)\\.\\(?:[ 	
]*(line +\\([0-9]+\\))\\)?"

which is essentially a search for `* user'.

It is only after gathering all matches for this regexp,
across all indexes, that `Info-index' presents them to you,
providing completion (substring completion, in your case).

In sum, you would need to rewrite `Info-index' or heavily
advise it, to get it to DTRT.

Or you can just use Icicles.  `i user S-TAB' shows these
index-entry completion candidates for the Emacs manual:

--user
ange-ftp-default-user
apropos-user-option 
ask-user-about-lock
backup, and user-id
GDB User Interface layout 
load init file of another user
mail-user-agent
package-user-dir 
USER
user name for remote file access
user option 
user options, changing
user-full-name
user-mail-address 
user-mail-address <1>
user-mail-address, initialization 



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Substring matching for info index command
  2014-12-07 14:06 ` Drew Adams
@ 2014-12-07 14:16   ` Tom
  2014-12-07 14:56     ` Drew Adams
  0 siblings, 1 reply; 6+ messages in thread
From: Tom @ 2014-12-07 14:16 UTC (permalink / raw)
  To: help-gnu-emacs

Drew Adams <drew.adams <at> oracle.com> writes:
> 
> In other words, the problem is not with completion; it is
> with the way `Info-index' gathers the completion candidates
> from the indexes.  It does that by simply searching for
> your input, as a prefix (prepended by `* ', which is what
> is on the index-entry line in the index.


Thanks for your investigation, but why should info use
my input to gather completion candidates? It should
gather all candiates and pass them them to 
completing-read, shouldn't it?

Isn't it a bug? Incosistent behavior with the
builtin completion-styles?





^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: Substring matching for info index command
  2014-12-07 14:16   ` Tom
@ 2014-12-07 14:56     ` Drew Adams
  0 siblings, 0 replies; 6+ messages in thread
From: Drew Adams @ 2014-12-07 14:56 UTC (permalink / raw)
  To: Tom, help-gnu-emacs

> > In other words, the problem is not with completion; it is
> > with the way `Info-index' gathers the completion candidates
> > from the indexes.  It does that by simply searching for
> > your input, as a prefix (prepended by `* ', which is what
> > is on the index-entry line in the index.
> 
> Thanks for your investigation, but why should info use
> my input to gather completion candidates? 

I didn't say that it should.  I said that it does.
Feel free to file a bug report: `M-x report-emacs-bug'.

> It should gather all candiates and pass them them to
> completing-read, shouldn't it?
> Isn't it a bug? Incosistent behavior with the
> builtin completion-styles?

My opinion?  Yes.  (And that's what Icicles does.)



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Substring matching for info index command
  2014-12-07 12:15 Substring matching for info index command Tom
  2014-12-07 14:06 ` Drew Adams
@ 2014-12-07 15:56 ` Eli Zaretskii
  2014-12-07 16:02 ` Stefan Monnier
  2 siblings, 0 replies; 6+ messages in thread
From: Eli Zaretskii @ 2014-12-07 15:56 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Tom <adatgyujto@gmail.com>
> Date: Sun, 7 Dec 2014 12:15:52 +0000 (UTC)
> 
> I've never used the builtin completion-styles, because I 
> use other completion packages, but I thought I give it a try
> and try substring matching for the info index command.

info.el already does that: it first searches for the string at the
beginning of the index entries, and then anywhere inside the entries.



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Substring matching for info index command
  2014-12-07 12:15 Substring matching for info index command Tom
  2014-12-07 14:06 ` Drew Adams
  2014-12-07 15:56 ` Eli Zaretskii
@ 2014-12-07 16:02 ` Stefan Monnier
  2 siblings, 0 replies; 6+ messages in thread
From: Stefan Monnier @ 2014-12-07 16:02 UTC (permalink / raw)
  To: help-gnu-emacs

> I've never used the builtin completion-styles, because I 
> use other completion packages, but I thought I give it a try
> and try substring matching for the info index command.

Info should setup a "completion category" so you could configure this
via `completion-category-overrides'.  Please M-x report-emacs-bug.

> I added this advice to the command which wraps it in a
> let and sets completion-styles to substring:

> (defadvice Info-index (around my-Info-index activate)
>   (let ((completion-styles '(substring)))
>     ad-do-it))

That affects the body of the function (i.e. the code that, given
a query, will look for the corresponding place in the index), whereas
you want to tweak the way the interactive-spec works.

You might like to try something like (guaranteed 100% untested):

   (advice-add 'Info-index :before
               (lambda (&rest _)
                 (interactive
                   (lambda (spec)
                     (let ((completion-styles '(substring)))
                       (advice-eval-interactive-spec spec))))
                 nil))
                             
-- Stefan




^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-12-07 16:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-07 12:15 Substring matching for info index command Tom
2014-12-07 14:06 ` Drew Adams
2014-12-07 14:16   ` Tom
2014-12-07 14:56     ` Drew Adams
2014-12-07 15:56 ` Eli Zaretskii
2014-12-07 16:02 ` Stefan Monnier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).