Subject: RE: [External] : bug#74617: 30.0.92; ffap-menu always displays the *Completions* buffer

From: Drew Adams <[email-masked]>
Date: Sat, 30 Nov 2024 21:30:35 +0000

> > The pattern where completion commands want to display candidates
> > immediately is not uncommon. There are ffap, tmm and multiple
> > third-party packages which have such a requirement. So I suggest to not
> > necessarily treat "immediate candidate display" as a bug report, but
> > rather as a feature request for `completing-read'.
> 
> And imenu.el calls minibuffer-completion-help conditionally
> unless imenu-eager-completion-buffer is not nil.

`minibuffer-completion-help' is above all a user
command.

Why should any code call `minibuffer-completion-help',
other than code in minibuffer.el, or code in a command
whose purpose is (at least partly) to show *Completions*?

On the other hand, completion frameworks can provide
other means to show *Completions* initially or show
it incrementally in response to pattern input in the
minibuffer.

(E.g., Icicles has a user option to show candidates
initially and an option that supports incremental
completion.)
___

icicle-show-Completions-initially-flag is a variable defined in `icicles-opt.el'.

Its value is nil

Documentation:
Non-nil means to show buffer `*Completions*' even without user input.
nil means that `*Completions*' is shown upon demand, via `TAB' or
`S-TAB'.

For an alternative but similar behavior to using non-nil for
`icicle-show-Completions-initially-flag', you can set option
`icicle-incremental-completion' to a value that is neither nil nor t.
That displays buffer `*Completions*' as soon as you type or delete
input, but not initially.

Remember that you can use multi-command `icicle-toggle-option' anytime
(`M-i M-i' during completion) to toggle an option value.

You can customize this variable.
___

icicle-incremental-completion is a variable defined in `icicles-opt.el'.

Its value is t

Documentation:
Non-nil means update `*Completions*' buffer incrementally as you type.
nil means do not update `*Completions*' incrementally, as you type.

t means do nothing if `*Completions*' is not already displayed.
Non-nil and non-t means display `*Completions*' and update it.

You can cycle this among the possible values using `C-#' from the
minibuffer at any time.

Note: Incremental completion is effectively turned off when a remote
file name is read, that is, whenever your file-name input matches a
remote-file syntax.

See also `icicle-incremental-completion-delay' and
`icicle-incremental-completion-threshold'.

You can customize this variable.