From: Spencer Baugh <sbaugh@janestreet.com>
To: Dmitry Gutov <dmitry@gutov.dev>
Cc: mail@daniel-mendler.de, Juri Linkov <juri@linkov.net>,
48356@debbugs.gnu.org, monnier@iro.umontreal.ca,
jdtsmith@gmail.com, Visuwesh <visuweshm@gmail.com>,
Eli Zaretskii <eliz@gnu.org>
Subject: bug#48356: 28.0.50; choose-completion discards the suffix after the completion boundary
Date: Thu, 18 Apr 2024 10:25:01 -0400 [thread overview]
Message-ID: <ierplumbveq.fsf@janestreet.com> (raw)
In-Reply-To: <11a8e438-128d-47b3-ae6f-c3ce48bb902b@gutov.dev> (Dmitry Gutov's message of "Mon, 15 Apr 2024 02:55:35 +0300")
Dmitry Gutov <dmitry@gutov.dev> writes:
> Hi Juri,
>
> On 14/04/2024 19:44, Juri Linkov wrote:
>>> As one downside, it brings back behavior described in
>>> https://debbugs.gnu.org/34517#14. That doesn't seem too critical to me, but
>>> opinions might vary.
>> Sadly, this is quite an important case. Recently Spencer implemented
>> a way to deselect a candidate in the visible completions list
>> (minibuffer-visible-completions=t) when the user starts typing
>> in the minibuffer.
>
> I think the (admittedly pretty cool) minibuffer-visible-completions
> feature is orthogonal: the scenarios I'm considering and trying to fix
> here also involve selecting a completion from *Completions* in some
> way (e.g. using M-up or M-down followed by M-RET, in default
> configuration). And this is currently working worse for in-buffer
> completion than for minibuffer completion WRT keeping the suffix
> around.
Yes, e.g.:
1. emacs -Q
2. M-x shell
3. mkdir -p dir1 dir2 && touch dir1/foo dir2/foo
4. cat dir/foo TAB
5. *Completions* contains: 2 possible completions: dir1/ dir2/
6. Click "dir1/"
7. The buffer now contains "cat dir1/", the "foo" has been deleted
This is a bug, but moreover it's also inconsistent with minibuffer
completion, e.g.:
8. C-x C-f dir/foo TAB
9. *Completions* contains: 2 possible completions: dir1/ dir2/
10. Click "dir1/"
11. The minibuffer now contains "dir1/foo"
We should make them both behave the same way.
>> But then the user could change the mind
>> and still select a candidate. This would interfere with the
>> contents of the minibuffer.
>
> Suppose they do. But the list of completions they're shown is for an
> outdated input. Does it really make more sense to erase the current
> input than to insert the completion where it was supposed to go?
Yeah, this patch changes the behavior in the case of an outdated
*Completions* buffer, and the new behavior is buggy, but I think the old
behavior was also buggy and the new behavior is better.
Example: In emacs -Q, if I type
C-x C-f ~/src/emacs/emacs-2 <TAB>
I get completions "emacs-28" and "emacs-29"
Suppose I then type /src (without hitting tab or updating the
*Completions* buffer) so that the minibuffer contains:
~/src/emacs/emacs-2/src
Then I click on one of the completions to choose it.
Before this patch the minibuffer will contain:
~/src/emacs/emacs-28/
and after this patch it will contain
~/src/emacs/emacs-28//src
Both of these are wrong IMO, but IMO the second one is closer to
correct, and it's more consistent with the normal case (when
*Completions* is up to date) and with in-buffer completion behavior, so
I think this patch is an improvement and could be installed.
Still, maybe we can get it to the point where clicking on an outdated
completion makes the minibuffer contain
~/src/emacs/emacs-28/src
instead? Which I think is the correct behavior.
But I don't think we need to do that before landing this patch.
next prev parent reply other threads:[~2024-04-18 14:25 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-11 17:23 bug#48356: 28.0.50; choose-completion discards the suffix after the completion boundary Daniel Mendler
2022-03-13 17:56 ` Juri Linkov
2022-03-13 20:35 ` bug#48356: [External] : " Drew Adams
2022-03-14 3:10 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-03-14 18:53 ` Juri Linkov
2022-03-14 20:55 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-03-15 2:14 ` Daniel Mendler
2022-03-15 7:53 ` Juri Linkov
2022-03-20 20:34 ` Juri Linkov
2024-04-08 21:59 ` Dmitry Gutov
2024-04-08 22:27 ` Dmitry Gutov
2024-04-08 23:50 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-10 1:33 ` Dmitry Gutov
2024-04-10 2:38 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-11 1:00 ` Dmitry Gutov
2024-04-11 6:55 ` Eli Zaretskii
2024-04-11 10:36 ` Dmitry Gutov
2024-04-11 21:59 ` Dmitry Gutov
2024-04-14 16:44 ` Juri Linkov
2024-04-14 23:55 ` Dmitry Gutov
2024-04-18 14:25 ` Spencer Baugh [this message]
2024-04-20 0:12 ` Dmitry Gutov
2024-05-04 2:23 ` Dmitry Gutov
2024-05-09 2:33 ` Dmitry Gutov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ierplumbveq.fsf@janestreet.com \
--to=sbaugh@janestreet.com \
--cc=48356@debbugs.gnu.org \
--cc=dmitry@gutov.dev \
--cc=eliz@gnu.org \
--cc=jdtsmith@gmail.com \
--cc=juri@linkov.net \
--cc=mail@daniel-mendler.de \
--cc=monnier@iro.umontreal.ca \
--cc=visuweshm@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).