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

From: Dmitry Gutov <[email-masked]>
Date: Mon, 04 Feb 2013 15:20:41 +0400

"Drew Adams" <[email-masked]> writes:

> Icomplete mode is general, for use with all minibuffers, whatever the
> kind of input being done (kind of completion or input without
> completion, etc.).

No, it's not, it's only used in specific cases.
For example, icomplete is not used in minibuffer during eval-expression.

> It needs to be sensitive to this and not impose
> itself like a brute.  There are many minibuffer keymaps, with many keys
> in them.  And applications often define more keys in these maps.
>  
> These Icomplete keybindings are inappropriate:
>  
> (defvar icomplete-minibuffer-map
>   (let ((map (make-sparse-keymap)))
>     (define-key map [?\M-\t] 'minibuffer-force-complete)
>     (define-key map [?\C-j]  'minibuffer-force-complete-and-exit)
>     (define-key map [?\C-s]  'icomplete-forward-completions)
>     (define-key map [?\C-r]  'icomplete-backward-completions)
>     map))
>  
> It is not kosher to bind such keys in the minibuffer in a general mode.
> Let users bind them if they like.

I'd like to comment on this as a ido-mode user.

> In particular: C-s and C-r are used to search minibuffer text (e.g.
> move

Instead of searching though the already entered text, this behavior
allows you to "search" through the candidates.
Since this mode is usually enabled when you're trying to write or pick a
single symbol, not a bunch of text, this strikes me as more appropriate.

> the cursor).  M-TAB is useful in the minibuffer to complete names.

Likewise, minibuffer-force-complete does complete the current symbol.
What's the problematic use case?

--Dmitry