Subject: bug#68801: 30.0.50; minibuffer-visible-completions=t makes RET in completion-in-region a no-op with nothing selected

From: [email-masked]
Date: Sat, 10 Feb 2024 18:14:26 +0000 (UTC)

Juri Linkov <[email-masked]> writes:
>>> Here's a simple patch: What if minibuffer-visible-completions just only
>>> overrides RET when there's a selected completion?  See below.  Could
>>> this make sense?
>>
>> Yes, this makes sense.  I'll try your patch for a while.
>
> Thanks for the patch, it works nicely.
>
> Could you please write a commit message for this patch.

The annoying thing is that this breaks the enhancement to
completion-show-help I recently made.  When a completion is not
selected, RET isn't bound, so the help shows "Click or type M-x
minibuffer-choose-completion-or-exit on a completion to select it."

I'm not sure the right way to fix that.  Selectively binding RET based
on whether a completion is selected feels sketchy anyway, it may confuse
users because e.g. C-h c RET won't work.

Maybe instead we should always bind RET, but if no completion is
selected, we run the command that RET was bound to before
completion-in-region-mode started?

Alternatively... as a completely separate point, I'd like
completion-in-region to select the first completion candidate by
default.  I think that's useful in some cases and, for
completion-in-region, doesn't have any negatives: we couldn't do it in
the minibuffer because it would interfere with accepting the default,
but there are no defaults in completion-in-region.

If we make c-i-r select the first completion candidate by default, that
would both:

- Make the completion-show-help help render correctly with the "only
  override RET when there's a selected completion" patch.

- Partially mitigate the RET issue all on its own

Wdyt?