GNU bug report logs -
#70968
29.2.50; choose-completion on an emacs22-style completion deletes text after point
Previous Next
To reply to this bug, email your comments to 70968 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
dmitry <at> gutov.dev, juri <at> linkov.net, bug-gnu-emacs <at> gnu.org
:
bug#70968
; Package
emacs
.
(Wed, 15 May 2024 20:27:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Spencer Baugh <sbaugh <at> janestreet.com>
:
New bug report received and forwarded. Copy sent to
dmitry <at> gutov.dev, juri <at> linkov.net, bug-gnu-emacs <at> gnu.org
.
(Wed, 15 May 2024 20:27:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
try-completion and choose-completion have different behavior; with the
emacs22 completion style, the former preserves the text after point
(while ignoring it), whereas the latter deletes the text after point.
1. emacs -Q
2. In scratch, type "inhibit-asdf" and move point to after the "-"
3. Type "q" and M-<tab>
The buffer now contains "inhibit-quitasdf", because the emacs22 style
ignored the text after point and completed on "inhibit-q".
4. C-/ C-/ to change the buffer back to "inhibit-asdf"
5. M-<tab>
The *Completions* buffer will be displayed, containing among others
"inhibit-quit" as a completion, because the emacs22 style ignored the
text after point and completed on "inhibit-".
6. Use M-<down> and M-<ret> to select and choose "inhibit-quit"
The buffer now contains "inhibit-quit".
The two ways of selecting completions should behave the same.
I suggest that the behavior of not deleting the text after point is
better. The emacs22 style takes care to not delete the text after point
in try-completion and in completion cycling; we should take similar care
in choose-completion.
This is especially noticeable when using minibuffer-visible-completions,
which make it easier to use choose-completion. It's also especially
noticeable with corfu-mode, which usually automatically calls
choose-completion when finishing completion.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#70968
; Package
emacs
.
(Thu, 16 May 2024 08:14:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 70968 <at> debbugs.gnu.org (full text, mbox):
> Cc: dmitry <at> gutov.dev, juri <at> linkov.net
> From: Spencer Baugh <sbaugh <at> janestreet.com>
> Date: Wed, 15 May 2024 16:26:50 -0400
>
>
> try-completion and choose-completion have different behavior; with the
> emacs22 completion style, the former preserves the text after point
> (while ignoring it), whereas the latter deletes the text after point.
>
> 1. emacs -Q
>
> 2. In scratch, type "inhibit-asdf" and move point to after the "-"
>
> 3. Type "q" and M-<tab>
> The buffer now contains "inhibit-quitasdf", because the emacs22 style
> ignored the text after point and completed on "inhibit-q".
>
> 4. C-/ C-/ to change the buffer back to "inhibit-asdf"
>
> 5. M-<tab>
> The *Completions* buffer will be displayed, containing among others
> "inhibit-quit" as a completion, because the emacs22 style ignored the
> text after point and completed on "inhibit-".
>
> 6. Use M-<down> and M-<ret> to select and choose "inhibit-quit"
> The buffer now contains "inhibit-quit".
>
> The two ways of selecting completions should behave the same.
>
> I suggest that the behavior of not deleting the text after point is
> better. The emacs22 style takes care to not delete the text after point
> in try-completion and in completion cycling; we should take similar care
> in choose-completion.
If making these two ways consistent means we need to change the
behavior of emacs22 style of completion, then I'm sorry, but we cannot
do that. This style is a legacy style, and is there to provide the
legacy behavior for those who need it.
So for making the decisions in this case we need to know how did Emacs
22 and later versions behave in the above scenario, and take it from
there. If they all behaved like you show, then this behavior must
stay unchanged, unfortunately, for backward-compatibility reasons.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#70968
; Package
emacs
.
(Thu, 16 May 2024 17:27:02 GMT)
Full text and
rfc822 format available.
Message #11 received at 70968 <at> debbugs.gnu.org (full text, mbox):
On 16/05/2024 11:13, Eli Zaretskii wrote:
>> Cc: dmitry <at> gutov.dev, juri <at> linkov.net
>> From: Spencer Baugh <sbaugh <at> janestreet.com>
>> Date: Wed, 15 May 2024 16:26:50 -0400
>>
>>
>> try-completion and choose-completion have different behavior; with the
>> emacs22 completion style, the former preserves the text after point
>> (while ignoring it), whereas the latter deletes the text after point.
>>
>> 1. emacs -Q
>>
>> 2. In scratch, type "inhibit-asdf" and move point to after the "-"
>>
>> 3. Type "q" and M-<tab>
>> The buffer now contains "inhibit-quitasdf", because the emacs22 style
>> ignored the text after point and completed on "inhibit-q".
>>
>> 4. C-/ C-/ to change the buffer back to "inhibit-asdf"
>>
>> 5. M-<tab>
>> The *Completions* buffer will be displayed, containing among others
>> "inhibit-quit" as a completion, because the emacs22 style ignored the
>> text after point and completed on "inhibit-".
>>
>> 6. Use M-<down> and M-<ret> to select and choose "inhibit-quit"
>> The buffer now contains "inhibit-quit".
>>
>> The two ways of selecting completions should behave the same.
>>
>> I suggest that the behavior of not deleting the text after point is
>> better. The emacs22 style takes care to not delete the text after point
>> in try-completion and in completion cycling; we should take similar care
>> in choose-completion.
>
> If making these two ways consistent means we need to change the
> behavior of emacs22 style of completion, then I'm sorry, but we cannot
> do that. This style is a legacy style, and is there to provide the
> legacy behavior for those who need it.
I don't think that would be required exactly.
The problem here (IIUC) is that completion behaves differently with the
emacs22 style depending on whether the execution path went through
choose-completion (which is not a method of completion style but a
common subroutine) or not (when completion--do-completion performed
expansion).
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#70968
; Package
emacs
.
(Thu, 16 May 2024 17:41:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 70968 <at> debbugs.gnu.org (full text, mbox):
>> I suggest that the behavior of not deleting the text after point is
>> better. The emacs22 style takes care to not delete the text after point
>> in try-completion and in completion cycling; we should take similar care
>> in choose-completion.
I agree this inconsistency is a bug.
I suspect it may have been a result of implementation limitations.
A typical use case is
C-x C-w bar
... realize you're not in the right subdir ...
M-b ?
... choose some subdirectory in which you want to save `bar`
... Oops, oh no, `bar` has disappeared!
> If making these two ways consistent means we need to change the
> behavior of emacs22 style of completion, then I'm sorry, but we cannot
> do that. This style is a legacy style, and is there to provide the
> legacy behavior for those who need it.
I'm not sure it's terribly important to preserve this detail of the
behavior of `Emacs-22`. The `emacs22` style does not aim to provide the
illusion you're running an old Emacs. I named it that way because
I couldn't come up with a good descriptive name for it. If it
misbehaves, I don't see a need to be bug-compatible, especially since
this doesn't affect ELisp code but users.
Stefan
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#70968
; Package
emacs
.
(Thu, 16 May 2024 18:27:01 GMT)
Full text and
rfc822 format available.
Message #17 received at 70968 <at> debbugs.gnu.org (full text, mbox):
> Date: Thu, 16 May 2024 20:26:31 +0300
> Cc: 70968 <at> debbugs.gnu.org, juri <at> linkov.net,
> Stefan Monnier <monnier <at> IRO.UMontreal.CA>
> From: Dmitry Gutov <dmitry <at> gutov.dev>
>
> On 16/05/2024 11:13, Eli Zaretskii wrote:
> >> Cc: dmitry <at> gutov.dev, juri <at> linkov.net
> >> From: Spencer Baugh <sbaugh <at> janestreet.com>
> >> Date: Wed, 15 May 2024 16:26:50 -0400
> >>
> >>
> >> try-completion and choose-completion have different behavior; with the
> >> emacs22 completion style, the former preserves the text after point
> >> (while ignoring it), whereas the latter deletes the text after point.
> >>
> >> 1. emacs -Q
> >>
> >> 2. In scratch, type "inhibit-asdf" and move point to after the "-"
> >>
> >> 3. Type "q" and M-<tab>
> >> The buffer now contains "inhibit-quitasdf", because the emacs22 style
> >> ignored the text after point and completed on "inhibit-q".
> >>
> >> 4. C-/ C-/ to change the buffer back to "inhibit-asdf"
> >>
> >> 5. M-<tab>
> >> The *Completions* buffer will be displayed, containing among others
> >> "inhibit-quit" as a completion, because the emacs22 style ignored the
> >> text after point and completed on "inhibit-".
> >>
> >> 6. Use M-<down> and M-<ret> to select and choose "inhibit-quit"
> >> The buffer now contains "inhibit-quit".
> >>
> >> The two ways of selecting completions should behave the same.
> >>
> >> I suggest that the behavior of not deleting the text after point is
> >> better. The emacs22 style takes care to not delete the text after point
> >> in try-completion and in completion cycling; we should take similar care
> >> in choose-completion.
> >
> > If making these two ways consistent means we need to change the
> > behavior of emacs22 style of completion, then I'm sorry, but we cannot
> > do that. This style is a legacy style, and is there to provide the
> > legacy behavior for those who need it.
>
> I don't think that would be required exactly.
>
> The problem here (IIUC) is that completion behaves differently with the
> emacs22 style depending on whether the execution path went through
> choose-completion (which is not a method of completion style but a
> common subroutine) or not (when completion--do-completion performed
> expansion).
I understand that much. But what did these two (or their
then-equivalents) do in Emacs 22 and Emacs 23?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#70968
; Package
emacs
.
(Thu, 16 May 2024 18:30:02 GMT)
Full text and
rfc822 format available.
Message #20 received at 70968 <at> debbugs.gnu.org (full text, mbox):
> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Cc: Spencer Baugh <sbaugh <at> janestreet.com>, dmitry <at> gutov.dev,
> 70968 <at> debbugs.gnu.org, juri <at> linkov.net
> Date: Thu, 16 May 2024 13:40:35 -0400
>
> > If making these two ways consistent means we need to change the
> > behavior of emacs22 style of completion, then I'm sorry, but we cannot
> > do that. This style is a legacy style, and is there to provide the
> > legacy behavior for those who need it.
>
> I'm not sure it's terribly important to preserve this detail of the
> behavior of `Emacs-22`. The `emacs22` style does not aim to provide the
> illusion you're running an old Emacs. I named it that way because
> I couldn't come up with a good descriptive name for it. If it
> misbehaves, I don't see a need to be bug-compatible, especially since
> this doesn't affect ELisp code but users.
I think it does, sorry. Suchj old behavior is a de-facto standard.
If we change that, we should at least have a knob to get back the old
behavior.
This bug report was last modified 15 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.