help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [External] : Incrementally display the Emacs command list filtered o


From: Drew Adams
Subject: RE: [External] : Incrementally display the Emacs command list filtered out by the input key words in real-time.
Date: Fri, 2 Jul 2021 14:43:31 +0000

> Say, when I input "foo bar", the matched command
> list are incrementally displayed immediately, and
> finally the ones which including "foo" and "bar"
> in any part of the candidate commands are filtered
> out. How do I configure my init file to implement
> this feature?

Not too sure what you're asking for.

1. You say you want to first see command-name
   matches for input `foo bar'.
2. But then you say you want command names that
   contain either `foo' or `bar' to be filtered
   out (i.e., excluded).

Those two seem contradictory.  The first seems
unnecessary - undone by the second.  But maybe
you just want to see all command names at first,
for some reason.

Anyway, if what you want is instead something
like this:

1. You see all command names initially.
2. You type something to exclude the names that
   contain either `foo' or `bar'.

Then that's trivial if you use Icicles.

1. To see all completions initially, set or bind
   variable `icicle-show-Completions-initially-flag'
   to non-nil.

2. To exclude matches of some pattern (e.g. `foo'):

   a. Type the pattern, to see _only_ its matches.
   b. Use `C-~' to get the complement, i.e., to
      subtract those matches from the previous set
      of matches. 

E.g., to exclude all matches for `foo' or `bar'
(anywhere in the command name, i.e., in any order):

1. Type `foo C-~' to see all except `foo' matches.
2. Type `bar C-~' to see all except matches for
   `foo' or `bar'.

See also:

* https://www.emacswiki.org/emacs/Icicles_-_Nutshell_View#ChippingAway

* https://www.emacswiki.org/emacs/Icicles_-_Candidate_Sets#SetOperations

If you don't really care to show all completions for
empty input (e.g. all command names), then leave
`icicle-show-Completions-initially-flag' nil.

By default, you can just use `TAB' or `S-TAB' to
initiate completion.  Doing that once suffices:
completions are then updated automatically as you
change your minibuffer input.

If you want completions to be updated automatically
whenever you change minibuffer input without having
to use `TAB' or `S-TAB', but you don't want to show
completions initially (i.e., with empty input), then
set variable `icicle-incremental-completion' to
non-nil and non-t (the default value is `t').

[You can cycle its value any time, using `C-#' during
completion: OFF, ON (initiated by `TAB' or `S-TAB'),
or eager (initiated by typing anything).]

See: https://www.emacswiki.org/emacs/Icicles_-_Icompletion#IncrementalCompletion

___

There is, BTW, no "fuzzy" matching involved in
your example of excluding `foo' and `bar' matches.
However, Icicles does support fuzzy matching -
seven kinds of fuzzy matching, in fact.

See 
https://www.emacswiki.org/emacs/Icicles_-_Completion_Methods_and_Styles#FuzzyCompletion

reply via email to

[Prev in Thread] Current Thread [Next in Thread]