Subject: bug#13602: 24.3.50; remove bindings for `icomplete-minibuffer-map' - make a separate mode

From: "Drew Adams" <[email-masked]>
Date: Mon, 4 Feb 2013 09:40:50 -0800

> > And do not have Icomplete trample minibuffer bindings by 
> > default.  Let users opt in for that.
> 
> Does Ido-like Icomplete mode interfere with any of your (existing?)
> libraries?

Yes, but it is irrelevant.  I am not arguing wrt any other libraries.  The
argument is general.  It is wrt emacs -Q and its normal, default minibuffer
behavior.

And it is general in that it is also wrt nearly any minibuffer behavior (not
just emacs -Q), from nearly any package, whether it be distributed by Emacs
(e.g. Ido, Viper) or not.  There is nothing in my argument that relates
specifically to any given package.

Until now, Icomplete has simply aided users passively, by showing the possibile
completions.  It has not in any way changed the behavior of the user's
interaction with the minibuffer (e.g. keys).

That should continue to be the default behavior: let Icomplete inform about
completions but not change the current minibuffer interaction (whatever that
might be, emacs -Q or otherwise).

Let Icomplete also offer an additional mode, like CUA does with CUA mode instead
of CUA selection mode, whereby it binds some cycling keys.  So much the better -
I'm glad you provided this feature.

> Note that I have no opinion on whether cycling should be opt-in or
> opt-out, by default.

I do.  It should be opt-in, so that Icomplete preserves, by default, whatever
minibuffer behavior is already present and preferred by the user.

There are many different minibuffer behaviors besides emacs -Q and Ido.  Some,
like Viper and Ido, are very different from emacs -Q.  Some are more similar to
emacs -Q.

The point is that a user's preferred minibuffer interaction should not be thrown
to the wind just because s?he turns on Icomplete mode.

And whether opt-in or opt-out, it should be trivial and clear for a user how to
toggle to the other behavior.

The code I sent lets you do that using a command/key.  No fiddling with keymaps
by users, etc.  If users want to change which keys are used for Icomplete
cycling, _then_ they can fiddle with the bindings.