* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer @ 2023-12-06 15:30 Sean Whitton 2023-12-06 17:13 ` Juri Linkov ` (2 more replies) 0 siblings, 3 replies; 45+ messages in thread From: Sean Whitton @ 2023-12-06 15:30 UTC (permalink / raw) To: 67661; +Cc: juri X-debbugs-cc: juri@linkov.net Hello, 1. emacs -q 2. (setopt icomplete-in-buffer t) 3. M-x icomplete-mode 4. M-x eshell 5. try to tab-complete something where there is more than one possible completion, e.g. ls<TAB> in a directory with many files. Previously you would get the icomplete in buffer completion. Now, additionally, *Completions* pops up, but it doesn't make sense to have both. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-06 15:30 bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer Sean Whitton @ 2023-12-06 17:13 ` Juri Linkov 2023-12-06 18:14 ` Sean Whitton 2023-12-06 18:41 ` Eli Zaretskii 2023-12-07 17:28 ` Juri Linkov 2 siblings, 1 reply; 45+ messages in thread From: Juri Linkov @ 2023-12-06 17:13 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661 > 1. emacs -q > 2. (setopt icomplete-in-buffer t) > 3. M-x icomplete-mode > 4. M-x eshell > 5. try to tab-complete something where there is more than one possible > completion, e.g. ls<TAB> in a directory with many files. > > Previously you would get the icomplete in buffer completion. > Now, additionally, *Completions* pops up, but it doesn't make sense to > have both. Is this related to bug#61943? ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-06 17:13 ` Juri Linkov @ 2023-12-06 18:14 ` Sean Whitton 0 siblings, 0 replies; 45+ messages in thread From: Sean Whitton @ 2023-12-06 18:14 UTC (permalink / raw) To: Juri Linkov; +Cc: 67661 Hello, On Wed 06 Dec 2023 at 07:13pm +02, Juri Linkov wrote: >> 1. emacs -q >> 2. (setopt icomplete-in-buffer t) >> 3. M-x icomplete-mode >> 4. M-x eshell >> 5. try to tab-complete something where there is more than one possible >> completion, e.g. ls<TAB> in a directory with many files. >> >> Previously you would get the icomplete in buffer completion. >> Now, additionally, *Completions* pops up, but it doesn't make sense to >> have both. > > Is this related to bug#61943? I'm not using fido-mode anymore, so I doubt it. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-06 15:30 bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer Sean Whitton 2023-12-06 17:13 ` Juri Linkov @ 2023-12-06 18:41 ` Eli Zaretskii 2023-12-07 11:42 ` Sean Whitton 2023-12-09 12:09 ` Sean Whitton 2023-12-07 17:28 ` Juri Linkov 2 siblings, 2 replies; 45+ messages in thread From: Eli Zaretskii @ 2023-12-06 18:41 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, juri > Cc: juri@linkov.net > From: Sean Whitton <spwhitton@spwhitton.name> > Date: Wed, 06 Dec 2023 15:30:12 +0000 > > X-debbugs-cc: juri@linkov.net > > Hello, > > 1. emacs -q > 2. (setopt icomplete-in-buffer t) > 3. M-x icomplete-mode > 4. M-x eshell > 5. try to tab-complete something where there is more than one possible > completion, e.g. ls<TAB> in a directory with many files. > > Previously you would get the icomplete in buffer completion. > Now, additionally, *Completions* pops up, but it doesn't make sense to > have both. AFAICT, the above description of the problem is inaccurate. The *Completions* buffer would pop up in previous versions as well, but only after a second TAB. Whereas the in-buffer completion would show after the first TAB. Now in Emacs 30 after the first TAB nothing happens, and after the second TAB you see the same display as previously after the second TAB: both in-buffer completion and the *Completions* buffer popped up. So I think the problem is that the first TAB does NOT show in-buffer completion anymore in the above scenario. ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-06 18:41 ` Eli Zaretskii @ 2023-12-07 11:42 ` Sean Whitton 2023-12-09 12:09 ` Sean Whitton 1 sibling, 0 replies; 45+ messages in thread From: Sean Whitton @ 2023-12-07 11:42 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 67661, Eshel Yaron, juri Hello, On Wed 06 Dec 2023 at 08:41pm +02, Eli Zaretskii wrote: >> Cc: juri@linkov.net >> From: Sean Whitton <spwhitton@spwhitton.name> >> Date: Wed, 06 Dec 2023 15:30:12 +0000 >> >> X-debbugs-cc: juri@linkov.net >> >> Hello, >> >> 1. emacs -q >> 2. (setopt icomplete-in-buffer t) >> 3. M-x icomplete-mode >> 4. M-x eshell >> 5. try to tab-complete something where there is more than one possible >> completion, e.g. ls<TAB> in a directory with many files. >> >> Previously you would get the icomplete in buffer completion. >> Now, additionally, *Completions* pops up, but it doesn't make sense to >> have both. > > AFAICT, the above description of the problem is inaccurate. The > *Completions* buffer would pop up in previous versions as well, but > only after a second TAB. Whereas the in-buffer completion would show > after the first TAB. Now in Emacs 30 after the first TAB nothing > happens, and after the second TAB you see the same display as > previously after the second TAB: both in-buffer completion and the > *Completions* buffer popped up. > > So I think the problem is that the first TAB does NOT show in-buffer > completion anymore in the above scenario. Confirmed, thank you. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-06 18:41 ` Eli Zaretskii 2023-12-07 11:42 ` Sean Whitton @ 2023-12-09 12:09 ` Sean Whitton 2023-12-09 13:08 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 1 reply; 45+ messages in thread From: Sean Whitton @ 2023-12-09 12:09 UTC (permalink / raw) To: Eshel Yaron, Juri Linkov; +Cc: 67661, Eli Zaretskii, 67001 Hello, On Wed 06 Dec 2023 at 08:41pm +02, Eli Zaretskii wrote: > AFAICT, the above description of the problem is inaccurate. The > *Completions* buffer would pop up in previous versions as well, but > only after a second TAB. Whereas the in-buffer completion would show > after the first TAB. Now in Emacs 30 after the first TAB nothing > happens, and after the second TAB you see the same display as > previously after the second TAB: both in-buffer completion and the > *Completions* buffer popped up. > > So I think the problem is that the first TAB does NOT show in-buffer > completion anymore in the above scenario. Commit 5416896d608 is responsible for the problem. It would seem that it turns off completion-in-region-mode too early. Eshel, Juri, can you take a look, please? Thanks. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-09 12:09 ` Sean Whitton @ 2023-12-09 13:08 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors 2023-12-09 13:25 ` Eli Zaretskii 0 siblings, 1 reply; 45+ messages in thread From: Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-12-09 13:08 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, Eli Zaretskii, 67001, Juri Linkov Hi Sean, Sean Whitton <spwhitton@spwhitton.name> writes: > Previously you would get the icomplete in buffer completion. Now, > additionally, *Completions* pops up, but it doesn't make sense to have > both. I agree that having both interface together is a bit much, but AFAICT that has been the case at least since Emacs 27 whenever the text before point was the longest common prefix of several completion candidates. For example, try completing "l" instead of "ls" in eshell. On both Emacs 27 and on master, this shows both the *Completions* buffer and the in-buffer `icomplete` interface. Is this what you get as well? Sean Whitton <spwhitton@spwhitton.name> writes: > Hello, > > On Wed 06 Dec 2023 at 08:41pm +02, Eli Zaretskii wrote: > >> AFAICT, the above description of the problem is inaccurate. The >> *Completions* buffer would pop up in previous versions as well, but >> only after a second TAB. Whereas the in-buffer completion would show >> after the first TAB. Now in Emacs 30 after the first TAB nothing >> happens, and after the second TAB you see the same display as >> previously after the second TAB: both in-buffer completion and the >> *Completions* buffer popped up. >> >> So I think the problem is that the first TAB does NOT show in-buffer >> completion anymore in the above scenario. > > Commit 5416896d608 is responsible for the problem. > It would seem that it turns off completion-in-region-mode too early. IIUC, the problem of showing both interfaces is inherent to how `icomplete-in-buffer` is implemented. It's just that in this case of completing "ls" the *Completions* doesn't show up at first because it's an exact match. What allowed the `icomplete` to show up is that although the *Completions* buffer wasn't shown, `completion-in-region-mode` would remain on, and that caused only the `icomplete` interface to appear in this specific case. The reason we now disable `completion-in-region-mode` when it doesn't show the *Completions* buffer, is to avoid having the key bindings that this minor mode sets up from lingering and shadowing other bindings. If it doesn't make sense for `icomplete-in-buffer` to appear along with the *Completions* buffer, perhaps `icomplete-in-buffer` should simply be an alternative `completion-in-region-function`? Best, Eshel ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-09 13:08 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-12-09 13:25 ` Eli Zaretskii 2023-12-09 14:13 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 1 reply; 45+ messages in thread From: Eli Zaretskii @ 2023-12-09 13:25 UTC (permalink / raw) To: Eshel Yaron; +Cc: 67661, juri, 67001, spwhitton > From: Eshel Yaron <me@eshelyaron.com> > Cc: Juri Linkov <juri@linkov.net>, 67661@debbugs.gnu.org, Eli Zaretskii > <eliz@gnu.org>, 67001@debbugs.gnu.org > Date: Sat, 09 Dec 2023 14:08:45 +0100 > > Sean Whitton <spwhitton@spwhitton.name> writes: > > > Previously you would get the icomplete in buffer completion. Now, > > additionally, *Completions* pops up, but it doesn't make sense to have > > both. > > I agree that having both interface together is a bit much, but AFAICT > that has been the case at least since Emacs 27 whenever the text before > point was the longest common prefix of several completion candidates. > For example, try completing "l" instead of "ls" in eshell. On both > Emacs 27 and on master, this shows both the *Completions* buffer and the > in-buffer `icomplete` interface. Is this what you get as well? This is not the regression that needs to be fixed here. > > On Wed 06 Dec 2023 at 08:41pm +02, Eli Zaretskii wrote: > > > >> AFAICT, the above description of the problem is inaccurate. The > >> *Completions* buffer would pop up in previous versions as well, but > >> only after a second TAB. Whereas the in-buffer completion would show > >> after the first TAB. Now in Emacs 30 after the first TAB nothing > >> happens, and after the second TAB you see the same display as > >> previously after the second TAB: both in-buffer completion and the > >> *Completions* buffer popped up. > >> > >> So I think the problem is that the first TAB does NOT show in-buffer > >> completion anymore in the above scenario. > > > > Commit 5416896d608 is responsible for the problem. > > It would seem that it turns off completion-in-region-mode too early. > > IIUC, the problem of showing both interfaces is inherent to how > `icomplete-in-buffer` is implemented. Once again, the fact that the second TAB shows both completion interfaces is not the problem: as you point out that was how Emacs behaved since long ago. The problem here is that the _first_ TAB does NOT show in-buffer completions. This should be fixed, since it is a regression wrt Emacs 29. > It's just that in this case of > completing "ls" the *Completions* doesn't show up at first because it's > an exact match. What allowed the `icomplete` to show up is that > although the *Completions* buffer wasn't shown, > `completion-in-region-mode` would remain on, and that caused only the > `icomplete` interface to appear in this specific case. > > The reason we now disable `completion-in-region-mode` when it doesn't > show the *Completions* buffer, is to avoid having the key bindings that > this minor mode sets up from lingering and shadowing other bindings. That sounds like some very technical problem, and it should be fixed by some other means than disabling completion-in-region-mode. > If it doesn't make sense for `icomplete-in-buffer` to appear along with > the *Completions* buffer Again, this is not the problem to solve. ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-09 13:25 ` Eli Zaretskii @ 2023-12-09 14:13 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors 2023-12-09 14:40 ` Eli Zaretskii 0 siblings, 1 reply; 45+ messages in thread From: Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-12-09 14:13 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 67661, juri, 67001, spwhitton Eli Zaretskii <eliz@gnu.org> writes: >> From: Eshel Yaron <me@eshelyaron.com> >> >> Sean Whitton <spwhitton@spwhitton.name> writes: >> >> > Previously you would get the icomplete in buffer completion. Now, >> > additionally, *Completions* pops up, but it doesn't make sense to have >> > both. >> >> I agree that having both interface together is a bit much, but AFAICT >> that has been the case at least since Emacs 27 whenever the text before >> point was the longest common prefix of several completion candidates. >> For example, try completing "l" instead of "ls" in eshell. On both >> Emacs 27 and on master, this shows both the *Completions* buffer and the >> in-buffer `icomplete` interface. Is this what you get as well? >> [...] >> IIUC, the problem of showing both interfaces is inherent to how >> `icomplete-in-buffer` is implemented. > > Once again, the fact that the second TAB shows both completion > interfaces is not the problem: as you point out that was how Emacs > behaved since long ago. The problem here is that the _first_ TAB does > NOT show in-buffer completions. Yes, but what I pointed out was that the first TAB has been showing both interfaces since Emacs 27, just not with this particular recipe. >> If it doesn't make sense for `icomplete-in-buffer` to appear along >> with the *Completions* buffer > > Again, this is not the problem to solve. Could you explain what you mean here? If this behavior doesn't make sense, isn't it worth trying to solve it for all cases, rather than just for one specific case? ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-09 14:13 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-12-09 14:40 ` Eli Zaretskii 2023-12-09 15:22 ` Sean Whitton 2023-12-09 16:03 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 2 replies; 45+ messages in thread From: Eli Zaretskii @ 2023-12-09 14:40 UTC (permalink / raw) To: Eshel Yaron; +Cc: 67661, juri, 67001, spwhitton > From: Eshel Yaron <me@eshelyaron.com> > Cc: spwhitton@spwhitton.name, juri@linkov.net, 67661@debbugs.gnu.org, > 67001@debbugs.gnu.org > Date: Sat, 09 Dec 2023 15:13:53 +0100 > > Eli Zaretskii <eliz@gnu.org> writes: > > > Once again, the fact that the second TAB shows both completion > > interfaces is not the problem: as you point out that was how Emacs > > behaved since long ago. The problem here is that the _first_ TAB does > > NOT show in-buffer completions. > > Yes, but what I pointed out was that the first TAB has been showing both > interfaces since Emacs 27, just not with this particular recipe. That's not what I see in Emacs 29. There' the first TAB shows only the in-buffer completions, and the second TAB pops up the *Completions* buffer (without removing the in-buffer completions). > >> If it doesn't make sense for `icomplete-in-buffer` to appear along > >> with the *Completions* buffer > > > > Again, this is not the problem to solve. > > Could you explain what you mean here? If this behavior doesn't make > sense, isn't it worth trying to solve it for all cases, rather than just > for one specific case? I don't think I understand what you mean by "one specific case". Which case, and why is it specific? Sean reported a regression in behavior under icomplete-in-buffer, so I looked into the recipe he posted. What I saw was that Emacs 29 shows the in-buffer completions after the first TAB and adds to that the *Completions* buffer after the second TAB. By contrast, Emacs 30 shows nothing after the first TAB, and shows both in-buffer completions and the *Completions* buffer after the second TAB. So my conclusion was that the regression is the behavior after the first TAB. If this conclusion is incorrect, please tell what did I miss. ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-09 14:40 ` Eli Zaretskii @ 2023-12-09 15:22 ` Sean Whitton 2023-12-09 16:03 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 0 replies; 45+ messages in thread From: Sean Whitton @ 2023-12-09 15:22 UTC (permalink / raw) To: Eli Zaretskii, Eshel Yaron; +Cc: 67661, 67001, juri Hello, On Sat 09 Dec 2023 at 04:40pm +02, Eli Zaretskii wrote: > Sean reported a regression in behavior under icomplete-in-buffer, so I > looked into the recipe he posted. What I saw was that Emacs 29 shows > the in-buffer completions after the first TAB and adds to that the > *Completions* buffer after the second TAB. By contrast, Emacs 30 > shows nothing after the first TAB, and shows both in-buffer > completions and the *Completions* buffer after the second TAB. So my > conclusion was that the regression is the behavior after the first > TAB. If this conclusion is incorrect, please tell what did I miss. This is exactly how I understand the situation. icomplete-in-buffer didn't work at all for years, until Juri (iirc) fixed it for Emacs 29. So what happens in much older Emacs doesn't seem important. It's a regression since Emacs 29. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-09 14:40 ` Eli Zaretskii 2023-12-09 15:22 ` Sean Whitton @ 2023-12-09 16:03 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors 2023-12-09 16:07 ` Sean Whitton 2023-12-09 16:22 ` Eli Zaretskii 1 sibling, 2 replies; 45+ messages in thread From: Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-12-09 16:03 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 67661, 67001, spwhitton, juri Eli Zaretskii <eliz@gnu.org> writes: >> From: Eshel Yaron <me@eshelyaron.com> >> Cc: spwhitton@spwhitton.name, juri@linkov.net, 67661@debbugs.gnu.org, >> 67001@debbugs.gnu.org >> Date: Sat, 09 Dec 2023 15:13:53 +0100 >> >> Eli Zaretskii <eliz@gnu.org> writes: >> >> > Once again, the fact that the second TAB shows both completion >> > interfaces is not the problem: as you point out that was how Emacs >> > behaved since long ago. The problem here is that the _first_ TAB does >> > NOT show in-buffer completions. >> >> Yes, but what I pointed out was that the first TAB has been showing both >> interfaces since Emacs 27, just not with this particular recipe. > > That's not what I see in Emacs 29. There' the first TAB shows only > the in-buffer completions, and the second TAB pops up the > *Completions* buffer (without removing the in-buffer completions). Did you try with "l" before point instead of "ls" as I suggested? Sean, how about you? >> >> If it doesn't make sense for `icomplete-in-buffer` to appear along >> >> with the *Completions* buffer >> > >> > Again, this is not the problem to solve. >> >> Could you explain what you mean here? If this behavior doesn't make >> sense, isn't it worth trying to solve it for all cases, rather than just >> for one specific case? > > I don't think I understand what you mean by "one specific case". > Which case, and why is it specific? I was referring to the specific case that Sean's recipe illustrated. This case exhibits a change in behavior that you clearly described, and that change is supposedly for the worse. IIUC what bothers Sean is that both interfaces appear together, but the thing is that that seems to be inherent to how `icomplete-in-buffer` currently works. > Sean reported a regression in behavior under icomplete-in-buffer, so I > looked into the recipe he posted. What I saw was that Emacs 29 shows > the in-buffer completions after the first TAB and adds to that the > *Completions* buffer after the second TAB. By contrast, Emacs 30 > shows nothing after the first TAB, and shows both in-buffer > completions and the *Completions* buffer after the second TAB. So my > conclusion was that the regression is the behavior after the first > TAB. If this conclusion is incorrect, please tell what did I miss. I think your reasoning is perfectly sound, but since already in Emacs 29 (and beforehand) both interfaces would appear together after the first TAB if you complete another string, restoring the behavior of Emacs 29 wouldn't fully address this problem. Put plainly, I'm not sure the Emacs 29 behavior of `icomplete-in-buffer` is any more intended than the current behavior. Stefan Monnier wrote[0] a couple of years ago about `icomplete-in-buffer`: I wrote it this way [as a defvar] because I consider(ed) that code just "proof of concept" and not working well enough to inflict it on unsuspecting users. Followed by: The problem is not so much in the code but in the behavior. If you think the behavior is good enough, then by all means use it, but I think it's a bit rough around the edges. I don't use `icomplete-in-buffer` myself, but seems like Sean does, so my suggestion was that we implement this in earnest as a `completion-in-region-function`, while specifying the intended behavior regarding TABs, overlays, and the *Completions* buffer. Best, Eshel [0] https://yhetil.org/emacs/jwvzgv1yec5.fsf-monnier+emacs@gnu.org/ ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-09 16:03 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-12-09 16:07 ` Sean Whitton 2023-12-09 17:19 ` Juri Linkov 2023-12-09 16:22 ` Eli Zaretskii 1 sibling, 1 reply; 45+ messages in thread From: Sean Whitton @ 2023-12-09 16:07 UTC (permalink / raw) To: Eshel Yaron; +Cc: 67661, Eli Zaretskii, 67001, juri Hello, On Sat 09 Dec 2023 at 05:03pm +01, Eshel Yaron wrote: > Did you try with "l" before point instead of "ls" as I suggested? > > Sean, how about you? I haven't tried this, because it does not seem to be relevant. > I was referring to the specific case that Sean's recipe illustrated. > This case exhibits a change in behavior that you clearly described, and > that change is supposedly for the worse. IIUC what bothers Sean is that > both interfaces appear together, but the thing is that that seems to be > inherent to how `icomplete-in-buffer` currently works. No, what bothers me is the regression as described by Eli. I apologise for not being clearer in my initial report. Thank you for your engagement. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-09 16:07 ` Sean Whitton @ 2023-12-09 17:19 ` Juri Linkov 2023-12-09 19:04 ` Sean Whitton 0 siblings, 1 reply; 45+ messages in thread From: Juri Linkov @ 2023-12-09 17:19 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, Eli Zaretskii, Eshel Yaron, 67001 >> I was referring to the specific case that Sean's recipe illustrated. >> This case exhibits a change in behavior that you clearly described, and >> that change is supposedly for the worse. IIUC what bothers Sean is that >> both interfaces appear together, but the thing is that that seems to be >> inherent to how `icomplete-in-buffer` currently works. > > No, what bothers me is the regression as described by Eli. By definition a regression is a bug where a feature that has worked before stops working. As you noted, icomplete-in-buffer didn't work for years, until I fixed it for Emacs 29 (as least brought it to a usable state). The test case that you described shows its effect only by accident, until Eshel improved the related behavior of completion-in-region-mode, so that now icomplete-in-buffer works consistently when it enables both at the same time: in-buffer completions and in *Completions*. So instead of trying to restore an arbitrary behavior at the moment just after icomplete-in-buffer became usable, it would be much more useful to invest energy to deciding how better to finish this feature. ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-09 17:19 ` Juri Linkov @ 2023-12-09 19:04 ` Sean Whitton 2023-12-10 17:46 ` Juri Linkov 0 siblings, 1 reply; 45+ messages in thread From: Sean Whitton @ 2023-12-09 19:04 UTC (permalink / raw) To: Juri Linkov; +Cc: 67661, Eli Zaretskii, Eshel Yaron, 67001 Hello, On Sat 09 Dec 2023 at 07:19pm +02, Juri Linkov wrote: >>> I was referring to the specific case that Sean's recipe illustrated. >>> This case exhibits a change in behavior that you clearly described, and >>> that change is supposedly for the worse. IIUC what bothers Sean is that >>> both interfaces appear together, but the thing is that that seems to be >>> inherent to how `icomplete-in-buffer` currently works. >> >> No, what bothers me is the regression as described by Eli. > > By definition a regression is a bug where a feature that has worked before > stops working. As you noted, icomplete-in-buffer didn't work for years, > until I fixed it for Emacs 29 (as least brought it to a usable state). > The test case that you described shows its effect only by accident, > until Eshel improved the related behavior of completion-in-region-mode, > so that now icomplete-in-buffer works consistently when it enables > both at the same time: in-buffer completions and in *Completions*. > > So instead of trying to restore an arbitrary behavior at the moment > just after icomplete-in-buffer became usable, it would be much more > useful to invest energy to deciding how better to finish this feature. Okay, well, if we think about it in terms of finishing the feature, then as the person who worked on it previously, could you share how you think it ought to work? ISTM that a single tab in Eshell starting completion, and a single tab not popping up a *Completions* buffer, are pretty clearly what we would want it to do, but maybe I just got used to it :) -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-09 19:04 ` Sean Whitton @ 2023-12-10 17:46 ` Juri Linkov 2023-12-10 21:42 ` Sean Whitton 0 siblings, 1 reply; 45+ messages in thread From: Juri Linkov @ 2023-12-10 17:46 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, Eli Zaretskii, Eshel Yaron, 67001 > Okay, well, if we think about it in terms of finishing the feature, then > as the person who worked on it previously, could you share how you think > it ought to work? > > ISTM that a single tab in Eshell starting completion, and a single tab > not popping up a *Completions* buffer, are pretty clearly what we would > want it to do, but maybe I just got used to it :) I think that Eshel is right about setting `completion-in-region-function` to a new function. This function should be like `completion--in-region` but without this line: (completion--in-region-1 start end) If you just remove this line from `completion--in-region` then it should work like you expected without popping up *Completions*. ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-10 17:46 ` Juri Linkov @ 2023-12-10 21:42 ` Sean Whitton 2023-12-11 17:15 ` Juri Linkov 0 siblings, 1 reply; 45+ messages in thread From: Sean Whitton @ 2023-12-10 21:42 UTC (permalink / raw) To: Juri Linkov; +Cc: 67661, Eli Zaretskii, Eshel Yaron, 67001 Hello, On Sun 10 Dec 2023 at 07:46pm +02, Juri Linkov wrote: >> Okay, well, if we think about it in terms of finishing the feature, then >> as the person who worked on it previously, could you share how you think >> it ought to work? >> >> ISTM that a single tab in Eshell starting completion, and a single tab >> not popping up a *Completions* buffer, are pretty clearly what we would >> want it to do, but maybe I just got used to it :) > > I think that Eshel is right about setting `completion-in-region-function` > to a new function. This function should be like `completion--in-region` > but without this line: > > (completion--in-region-1 start end) > > If you just remove this line from `completion--in-region` then > it should work like you expected without popping up *Completions*. Thanks, that does indeed restore the behaviour. Should we change this to a different completion-in-region-function in icomplete.el, then? Or what did you have in mind? -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-10 21:42 ` Sean Whitton @ 2023-12-11 17:15 ` Juri Linkov 2023-12-15 12:28 ` Sean Whitton 0 siblings, 1 reply; 45+ messages in thread From: Juri Linkov @ 2023-12-11 17:15 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, Eli Zaretskii, Eshel Yaron, 67001 >> (completion--in-region-1 start end) >> >> If you just remove this line from `completion--in-region` then >> it should work like you expected without popping up *Completions*. > > Thanks, that does indeed restore the behaviour. > > Should we change this to a different completion-in-region-function in > icomplete.el, then? Or what did you have in mind? What I think is that ideally icomplete-in-buffer in a regular buffer should work like in the minibuffer, i.e. to be active all the time. This is more like completion-preview-mode where in-buffer candidates are shown as you type, whereas explicitly typing M-C-i pops up the *Completions* buffer. Do you agree this would be nice to do? ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-11 17:15 ` Juri Linkov @ 2023-12-15 12:28 ` Sean Whitton 2023-12-19 17:29 ` Juri Linkov 0 siblings, 1 reply; 45+ messages in thread From: Sean Whitton @ 2023-12-15 12:28 UTC (permalink / raw) To: Juri Linkov; +Cc: 67661, Eli Zaretskii, Eshel Yaron, 67001 Hello, On Mon 11 Dec 2023 at 07:15pm +02, Juri Linkov wrote: >>> (completion--in-region-1 start end) >>> >>> If you just remove this line from `completion--in-region` then >>> it should work like you expected without popping up *Completions*. >> >> Thanks, that does indeed restore the behaviour. >> >> Should we change this to a different completion-in-region-function in >> icomplete.el, then? Or what did you have in mind? > > What I think is that ideally icomplete-in-buffer in a regular buffer > should work like in the minibuffer, i.e. to be active all the time. > This is more like completion-preview-mode where in-buffer candidates > are shown as you type, whereas explicitly typing M-C-i pops up > the *Completions* buffer. Do you agree this would be nice to do? Hmm. This is an interesting idea. I don't think it would suit me, though -- it sounds like it would be quite visually noisy. Do you think we can provide both? -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-15 12:28 ` Sean Whitton @ 2023-12-19 17:29 ` Juri Linkov 2023-12-19 18:31 ` Sean Whitton 0 siblings, 1 reply; 45+ messages in thread From: Juri Linkov @ 2023-12-19 17:29 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, Eli Zaretskii, Eshel Yaron, 67001 >>>> (completion--in-region-1 start end) >>>> >>>> If you just remove this line from `completion--in-region` then >>>> it should work like you expected without popping up *Completions*. >>> >>> Thanks, that does indeed restore the behaviour. >>> >>> Should we change this to a different completion-in-region-function in >>> icomplete.el, then? Or what did you have in mind? >> >> What I think is that ideally icomplete-in-buffer in a regular buffer >> should work like in the minibuffer, i.e. to be active all the time. >> This is more like completion-preview-mode where in-buffer candidates >> are shown as you type, whereas explicitly typing M-C-i pops up >> the *Completions* buffer. Do you agree this would be nice to do? > > Hmm. This is an interesting idea. I don't think it would suit me, > though -- it sounds like it would be quite visually noisy. Do you think > we can provide both? Both are already shown: M-C-i pops up the *Completions* buffer and activates in-buffer candidates. If you want M-C-i only to activate in-buffer candidates, then the line above should be removed from `completion--in-region`. ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-19 17:29 ` Juri Linkov @ 2023-12-19 18:31 ` Sean Whitton 2023-12-19 18:58 ` Juri Linkov 0 siblings, 1 reply; 45+ messages in thread From: Sean Whitton @ 2023-12-19 18:31 UTC (permalink / raw) To: Juri Linkov; +Cc: 67661, Eli Zaretskii, Eshel Yaron, 67001 Hello, On Tue 19 Dec 2023 at 07:29pm +02, Juri Linkov wrote: > Both are already shown: M-C-i pops up the *Completions* buffer > and activates in-buffer candidates. If you want M-C-i only > to activate in-buffer candidates, then the line above > should be removed from `completion--in-region`. When I said "provide both", I meant both your idea of how the feature should work, and my idea of how it should work. I didn't mean both the in-buffer candidates and the *Completions* buffer. What you've said isn't true, though: a single TAB, which is bound to completion-at-point in Eshell, does not show in-buffer candidates, nor does it pop up the *Completions* buffer. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-19 18:31 ` Sean Whitton @ 2023-12-19 18:58 ` Juri Linkov 2023-12-20 10:34 ` Sean Whitton 0 siblings, 1 reply; 45+ messages in thread From: Juri Linkov @ 2023-12-19 18:58 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, Eli Zaretskii, Eshel Yaron, 67001 >> Both are already shown: M-C-i pops up the *Completions* buffer >> and activates in-buffer candidates. If you want M-C-i only >> to activate in-buffer candidates, then the line above >> should be removed from `completion--in-region`. > > When I said "provide both", I meant both your idea of how the feature > should work, and my idea of how it should work. I didn't mean both the > in-buffer candidates and the *Completions* buffer. > > What you've said isn't true, though: a single TAB, which is bound to > completion-at-point in Eshell, does not show in-buffer candidates, nor > does it pop up the *Completions* buffer. Because ls<TAB> is complete, but not unique. So it requires the second TAB, exactly as in the minibuffer. A single TAB does this on incomplete candidate, e.g. l<TAB>. ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-19 18:58 ` Juri Linkov @ 2023-12-20 10:34 ` Sean Whitton 2023-12-20 17:14 ` Juri Linkov 2023-12-29 17:47 ` Sean Whitton 0 siblings, 2 replies; 45+ messages in thread From: Sean Whitton @ 2023-12-20 10:34 UTC (permalink / raw) To: Juri Linkov; +Cc: 67661, Eli Zaretskii, Eshel Yaron, 67001 Hello, On Tue 19 Dec 2023 at 08:58pm +02, Juri Linkov wrote: >>> Both are already shown: M-C-i pops up the *Completions* buffer >>> and activates in-buffer candidates. If you want M-C-i only >>> to activate in-buffer candidates, then the line above >>> should be removed from `completion--in-region`. >> >> When I said "provide both", I meant both your idea of how the feature >> should work, and my idea of how it should work. I didn't mean both the >> in-buffer candidates and the *Completions* buffer. >> >> What you've said isn't true, though: a single TAB, which is bound to >> completion-at-point in Eshell, does not show in-buffer candidates, nor >> does it pop up the *Completions* buffer. > > Because ls<TAB> is complete, but not unique. So it requires the second TAB, > exactly as in the minibuffer. A single TAB does this on incomplete candidate, > e.g. l<TAB>. Ah. This is not the bug. We may have been subtly miscommunicating. I am talking about completing the first argument to the command, not the 'ls' command itself. So for example: 1. emacs -q 2. (setopt icomplete-in-buffer t) 3. M-x icomplete-mode 4. M-x eshell 5. cd ~/src/emacs/ 6. ls l<TAB> It takes a second <TAB> to have Emacs display leim, lib, lib-src, lisp etc.. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-20 10:34 ` Sean Whitton @ 2023-12-20 17:14 ` Juri Linkov 2023-12-22 12:00 ` Sean Whitton 2023-12-29 17:47 ` Sean Whitton 1 sibling, 1 reply; 45+ messages in thread From: Juri Linkov @ 2023-12-20 17:14 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, Eli Zaretskii, Eshel Yaron, 67001 >> Because ls<TAB> is complete, but not unique. So it requires the second TAB, >> exactly as in the minibuffer. A single TAB does this on incomplete candidate, >> e.g. l<TAB>. > > Ah. This is not the bug. We may have been subtly miscommunicating. > I am talking about completing the first argument to the command, not > the 'ls' command itself. > > So for example: > > 1. emacs -q > 2. (setopt icomplete-in-buffer t) > 3. M-x icomplete-mode > 4. M-x eshell > 5. cd ~/src/emacs/ > 6. ls l<TAB> > > It takes a second <TAB> to have Emacs display leim, lib, lib-src, lisp etc.. Thanks for the reproducible test case. It seems there is a bug somewhere in pcomplete-completions-at-point. Without icomplete: 1. emacs -q 2. M-x eshell 3. ls l<TAB> says "Complete, but not unique" that is not true. There is no such problem with shell that uses comint-completion-at-point instead of pcomplete-completions-at-point. ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-20 17:14 ` Juri Linkov @ 2023-12-22 12:00 ` Sean Whitton 2023-12-23 17:38 ` Juri Linkov 0 siblings, 1 reply; 45+ messages in thread From: Sean Whitton @ 2023-12-22 12:00 UTC (permalink / raw) To: Juri Linkov, Eshel Yaron, Eli Zaretskii; +Cc: 67661, control, 67001 retitle 67661 30.0.50; Completion problem introduced by commit 5416896d608 thanks Hello, On Wed 20 Dec 2023 at 07:14pm +02, Juri Linkov wrote: > Thanks for the reproducible test case. It seems there is a bug somewhere in > pcomplete-completions-at-point. Without icomplete: > > 1. emacs -q > 2. M-x eshell > 3. ls l<TAB> > > says "Complete, but not unique" that is not true. > > There is no such problem with shell that uses comint-completion-at-point > instead of pcomplete-completions-at-point. I have confirmed that 5416896d608 is the commit that introduces/reveals the problem, for my revised test case. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-22 12:00 ` Sean Whitton @ 2023-12-23 17:38 ` Juri Linkov 0 siblings, 0 replies; 45+ messages in thread From: Juri Linkov @ 2023-12-23 17:38 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, Eli Zaretskii, Eshel Yaron, control, 67001 >> Thanks for the reproducible test case. It seems there is a bug somewhere in >> pcomplete-completions-at-point. Without icomplete: >> >> 1. emacs -q >> 2. M-x eshell >> 3. ls l<TAB> >> >> says "Complete, but not unique" that is not true. >> >> There is no such problem with shell that uses comint-completion-at-point >> instead of pcomplete-completions-at-point. > > I have confirmed that 5416896d608 is the commit that introduces/reveals > the problem, for my revised test case. This means that 5416896d608 exposed a bug in pcomplete-completions-at-point. ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-20 10:34 ` Sean Whitton 2023-12-20 17:14 ` Juri Linkov @ 2023-12-29 17:47 ` Sean Whitton 2023-12-29 18:00 ` Sean Whitton 1 sibling, 1 reply; 45+ messages in thread From: Sean Whitton @ 2023-12-29 17:47 UTC (permalink / raw) To: Juri Linkov, Eli Zaretskii; +Cc: 67661, control, Eshel Yaron retitle 67661 30.0.50; *Completions* has started popping up for icomplete-in-buffer thanks Hello, On Wed 20 Dec 2023 at 10:34am GMT, Sean Whitton wrote: > Ah. This is not the bug. We may have been subtly miscommunicating. > I am talking about completing the first argument to the command, not > the 'ls' command itself. > > So for example: > > 1. emacs -q > 2. (setopt icomplete-in-buffer t) > 3. M-x icomplete-mode > 4. M-x eshell > 5. cd ~/src/emacs/ > 6. ls l<TAB> > > It takes a second <TAB> to have Emacs display leim, lib, lib-src, lisp etc.. I've pushed a fix for this problem, which was in pcomplete--entries. Thanks again to Juri for pointing me to the Pcomplete machinery. I'm not sure whether to close the bug or not, because there remains the behavioural change for icomplete-in-buffer since Emacs 29.1. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-29 17:47 ` Sean Whitton @ 2023-12-29 18:00 ` Sean Whitton 2023-12-29 19:27 ` Eli Zaretskii 2024-01-10 3:12 ` john muhl via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 2 replies; 45+ messages in thread From: Sean Whitton @ 2023-12-29 18:00 UTC (permalink / raw) To: Juri Linkov, Eli Zaretskii, Eshel Yaron; +Cc: 67661 Hello, On Fri 29 Dec 2023 at 05:47pm GMT, Sean Whitton wrote: > I'm not sure whether to close the bug or not, because there remains the > behavioural change for icomplete-in-buffer since Emacs 29.1. I've found a work around for the behavioural change: (setopt completion-auto-help t) (advice-add 'completion-at-point :after #'minibuffer-hide-completions) So maybe we should just add something explaining this to NEWS? The default value of completion-auto-help is t, but I had it set to `lazy'. If someone wants the Emacs 29 behaviour back, they'll need to ensure completion-auto-help is t, so I think we should mention it somewhere. Essentially, completion-auto-help now affects both the *Completions* buffer and icomplete-in-buffer's display. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-29 18:00 ` Sean Whitton @ 2023-12-29 19:27 ` Eli Zaretskii 2023-12-29 20:24 ` Sean Whitton 2024-01-10 3:12 ` john muhl via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 1 reply; 45+ messages in thread From: Eli Zaretskii @ 2023-12-29 19:27 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, me, juri > From: Sean Whitton <spwhitton@spwhitton.name> > Cc: 67661@debbugs.gnu.org > Date: Fri, 29 Dec 2023 18:00:29 +0000 > > Hello, > > On Fri 29 Dec 2023 at 05:47pm GMT, Sean Whitton wrote: > > > I'm not sure whether to close the bug or not, because there remains the > > behavioural change for icomplete-in-buffer since Emacs 29.1. > > I've found a work around for the behavioural change: > > (setopt completion-auto-help t) > (advice-add 'completion-at-point :after #'minibuffer-hide-completions) > > So maybe we should just add something explaining this to NEWS? To which entry in Emacs 29's NEWS would this be related? > The default value of completion-auto-help is t, but I had it set to > `lazy'. > If someone wants the Emacs 29 behaviour back, they'll need to ensure > completion-auto-help is t, so I think we should mention it somewhere. > Essentially, completion-auto-help now affects both the *Completions* > buffer and icomplete-in-buffer's display. If your change modifies the default behavior, that should be called out in NEWS of Emacs 30. ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-29 19:27 ` Eli Zaretskii @ 2023-12-29 20:24 ` Sean Whitton 2023-12-30 6:30 ` Eli Zaretskii 2023-12-30 17:50 ` Juri Linkov 0 siblings, 2 replies; 45+ messages in thread From: Sean Whitton @ 2023-12-29 20:24 UTC (permalink / raw) To: Eli Zaretskii, juri; +Cc: 67661, me Hello, On Fri 29 Dec 2023 at 09:27pm +02, Eli Zaretskii wrote: > To which entry in Emacs 29's NEWS would this be related? I'm talking about how Juri fixed icomplete-in-buffer for Emacs 29, and how it's now working differently. Juri's fix wasn't noted in NEWS.29, so there isn't a relevant entry. Let me lay out where I think things stand now that the confounding Pcomplete bug is fixed. Here are four reproductions: ,---- | | 1. emacs -q | 2. (setopt icomplete-in-buffer t | completion-auto-help 'lazy) | 3. M-x icomplete-mode | | | 4a. M-x eshell | 5a. cd ~/src/emacs/<RET> | 6a. ls<SPC>l<TAB> | - Emacs 29: in-buffer Icomplete appears | - Emacs 30: nothing happens | 7a. <TAB> a second time | - Emacs 29: *Completions* pops up | - Emacs 30: in-buffer Icomplete appears & *Completions* pops up | | | 4b. Insert text into *scratch*: (setopt icomplete- | 5b. C-M-i | - Emacs 29: in-buffer Icomplete appears | - Emacs 30: nothing happens | 6b. C-M-i a second time | - Emacs 29: accepts the completion | - Emacs 30: in-buffer Icomplete appears & *Completion* pops up | |---- | | 1. emacs -q | 2. (setopt icomplete-in-buffer t) | 3. M-x icomplete-mode | | | 4a. M-x eshell | 5a. cd ~/src/emacs/<RET> | 6a. ls<SPC>l<TAB> | - Emacs 29: in-buffer Icomplete appears | - Emacs 30: in-buffer Icomplete appears & *Completions* pops up | 7a. <TAB> a second time | - Emacs 29: *Completions* pops up | - Emacs 30: n/a | | | 4b. Insert text into *scratch*: (setopt icomplete- | 5b. C-M-i | - Emacsen 29 & 30: in-buffer Icomplete appears & *Completions* pops up. |---- We could see this as two incompatible changes to icomplete-in-buffer since Emacs 29: A. completion-auto-help now controls whether C-M-i or <TAB> must be typed twice to display in-buffer Icomplete. Previously, completion-auto-help affected only minibuffer completion. I must have been thinking of it this way when I set it to `lazy'. B. *Completions* now always appears at the same time as the in-buffer Icomplete. Previously, in some cases, it would appear only after typing C-M-i or <TAB> twice. An Icomplete user like me is likely to want to respond to both these changes. The worst case is how nothing happens after a single <TAB> in the first reproduction, such that typing two <TAB>s is always required. Thus, I propose adding a NEWS.30 entry like this: There have been some changes which normalise some behaviour of in-buffer completion that affect users of icomplete-in-buffer. Firstly, completion-auto-help now governs icomplete-in-buffer, whereas previously it affected only minibuffer completion. You may wish to review any existing customisation for completion-auto-help if in-buffer completion behaves in a way that surprises you. Secondly, the *Completions* buffer now always pops up at the same time that Icomplete displays its in-buffer completion. If you would prefer to see only Icomplete's display, which is what you might be used to, you could use (advice-add 'completion-at-point :after #'minibuffer-hide-completions) The reason I haven't gone ahead and added this already is that Juri has suggested further changing icomplete-in-buffer's default behaviour. I don't think that we should do that. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-29 20:24 ` Sean Whitton @ 2023-12-30 6:30 ` Eli Zaretskii 2023-12-30 10:41 ` Sean Whitton 2023-12-30 17:50 ` Juri Linkov 1 sibling, 1 reply; 45+ messages in thread From: Eli Zaretskii @ 2023-12-30 6:30 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, me, juri > From: Sean Whitton <spwhitton@spwhitton.name> > Cc: me@eshelyaron.com, 67661@debbugs.gnu.org > Date: Fri, 29 Dec 2023 20:24:26 +0000 > > On Fri 29 Dec 2023 at 09:27pm +02, Eli Zaretskii wrote: > > > To which entry in Emacs 29's NEWS would this be related? > > I'm talking about how Juri fixed icomplete-in-buffer for Emacs 29, and > how it's now working differently. Juri's fix wasn't noted in NEWS.29, > so there isn't a relevant entry. I thought you were suggesting to add something to NEWS in Emacs 29. If there's no suitable entry there, then I wonder what did you have in mind for Emacs 29 in this area. > Thus, I propose adding a NEWS.30 entry like this: > > There have been some changes which normalise some behaviour of > in-buffer completion that affect users of icomplete-in-buffer. > > Firstly, completion-auto-help now governs icomplete-in-buffer, > whereas previously it affected only minibuffer completion. You may > wish to review any existing customisation for completion-auto-help > if in-buffer completion behaves in a way that surprises you. > > Secondly, the *Completions* buffer now always pops up at the same > time that Icomplete displays its in-buffer completion. If you would > prefer to see only Icomplete's display, which is what you might be > used to, you could use > > (advice-add 'completion-at-point :after #'minibuffer-hide-completions) AFAIU, this should also mention changes in Emacs 29 wrt previous versions. Also, the entry should in terms of user-facing behavior, not in terms of how code works. It should also be more concrete; phrases like "you may wish to review existing customizations" are too vague to be useful. The last paragraph seems to indicate we lack some user option or a variable to get back the old behavior, since using advice-add is less friendly than flipping a variable. (IMO, we are making too many backward-incompatible changes in this area lately. But that's me.) ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-30 6:30 ` Eli Zaretskii @ 2023-12-30 10:41 ` Sean Whitton 2023-12-30 17:52 ` Juri Linkov 0 siblings, 1 reply; 45+ messages in thread From: Sean Whitton @ 2023-12-30 10:41 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 67661, me, juri Hello, On Sat 30 Dec 2023 at 08:30am +02, Eli Zaretskii wrote: > AFAIU, this should also mention changes in Emacs 29 wrt previous > versions. > > Also, the entry should in terms of user-facing behavior, not in terms > of how code works. It should also be more concrete; phrases like "you > may wish to review existing customizations" are too vague to be > useful. Thank you for the feedback. I've committed some documentation updates, and would welcome any further revision. > The last paragraph seems to indicate we lack some user option or a > variable to get back the old behavior, since using advice-add is less > friendly than flipping a variable. > > (IMO, we are making too many backward-incompatible changes in this > area lately. But that's me.) I decided to go ahead and commit the documentation updates so that the current state of play is written down. Perhaps after further discussion we'll want to make other changes. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-30 10:41 ` Sean Whitton @ 2023-12-30 17:52 ` Juri Linkov 2023-12-30 19:43 ` Sean Whitton 0 siblings, 1 reply; 45+ messages in thread From: Juri Linkov @ 2023-12-30 17:52 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, Eli Zaretskii, me > I decided to go ahead and commit the documentation updates so that the > current state of play is written down. Perhaps after further discussion > we'll want to make other changes. I noticed in your changes that it's probably better to use the official name "Icomplete mode": diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi @@ -728,7 +728,7 @@ Icomplete @findex icomplete-mode @cindex Icomplete mode - Icomplete global minor mode provides a convenient way to quickly select an + Icomplete provides a convenient way to quickly select an element among the possible completions in a minibuffer. When enabled, typing in the minibuffer continuously displays a list of possible completions that match the string you have typed. i.e. "Icomplete mode provides a convenient way to..." ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-30 17:52 ` Juri Linkov @ 2023-12-30 19:43 ` Sean Whitton 0 siblings, 0 replies; 45+ messages in thread From: Sean Whitton @ 2023-12-30 19:43 UTC (permalink / raw) To: Juri Linkov; +Cc: 67661, Eli Zaretskii, me Hello, On Sat 30 Dec 2023 at 07:52pm +02, Juri Linkov wrote: >> I decided to go ahead and commit the documentation updates so that the >> current state of play is written down. Perhaps after further discussion >> we'll want to make other changes. > > I noticed in your changes that it's probably better to use the official name > "Icomplete mode": > > diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi > @@ -728,7 +728,7 @@ Icomplete > @findex icomplete-mode > @cindex Icomplete mode > > - Icomplete global minor mode provides a convenient way to quickly select an > + Icomplete provides a convenient way to quickly select an > element among the possible completions in a minibuffer. When enabled, typing > in the minibuffer continuously displays a list of possible completions that > match the string you have typed. > > i.e. "Icomplete mode provides a convenient way to..." Thanks, done. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-29 20:24 ` Sean Whitton 2023-12-30 6:30 ` Eli Zaretskii @ 2023-12-30 17:50 ` Juri Linkov 2023-12-30 19:43 ` Sean Whitton 1 sibling, 1 reply; 45+ messages in thread From: Juri Linkov @ 2023-12-30 17:50 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, Eli Zaretskii, me > | 4b. Insert text into *scratch*: (setopt icomplete- > | 5b. C-M-i > | - Emacsen 29 & 30: in-buffer Icomplete appears & *Completions* pops up. This is exactly how icomplete-in-buffer was intended to work. > Secondly, the *Completions* buffer now always pops up at the same > time that Icomplete displays its in-buffer completion. If you would > prefer to see only Icomplete's display, which is what you might be > used to, you could use > > (advice-add 'completion-at-point :after #'minibuffer-hide-completions) > > The reason I haven't gone ahead and added this already is that Juri has > suggested further changing icomplete-in-buffer's default behaviour. > I don't think that we should do that. I suggested adding a new option that would disable popping up *Completions*. This is preferable to instructing users how to use advice-add. But this might be not quite straightforward to implement. ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-30 17:50 ` Juri Linkov @ 2023-12-30 19:43 ` Sean Whitton 2023-12-31 8:29 ` Juri Linkov 0 siblings, 1 reply; 45+ messages in thread From: Sean Whitton @ 2023-12-30 19:43 UTC (permalink / raw) To: Juri Linkov; +Cc: 67661, Eli Zaretskii, me Hello, On Sat 30 Dec 2023 at 07:50pm +02, Juri Linkov wrote: >> | 4b. Insert text into *scratch*: (setopt icomplete- >> | 5b. C-M-i >> | - Emacsen 29 & 30: in-buffer Icomplete appears & *Completions* pops up. > > This is exactly how icomplete-in-buffer was intended to work. Right, yeah, I now understand that. In a previous message you said you think that icomplete-in-buffer is unfinished, and you'd like to consider further changes to how it works. Is that something you're still considering, or are you setting that aside for the time being? I ask because if you are happy with how things are now, we could close this bug. >> Secondly, the *Completions* buffer now always pops up at the same >> time that Icomplete displays its in-buffer completion. If you would >> prefer to see only Icomplete's display, which is what you might be >> used to, you could use >> >> (advice-add 'completion-at-point :after #'minibuffer-hide-completions) >> >> The reason I haven't gone ahead and added this already is that Juri has >> suggested further changing icomplete-in-buffer's default behaviour. >> I don't think that we should do that. > > I suggested adding a new option that would disable popping up *Completions*. > This is preferable to instructing users how to use advice-add. But this > might be not quite straightforward to implement. Yes, that would be preferable, if someone wants to work on it at some point. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-30 19:43 ` Sean Whitton @ 2023-12-31 8:29 ` Juri Linkov 0 siblings, 0 replies; 45+ messages in thread From: Juri Linkov @ 2023-12-31 8:29 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, Eli Zaretskii, me close 67661 30.0.50 thanks > In a previous message you said you think that icomplete-in-buffer is > unfinished, and you'd like to consider further changes to how it works. > Is that something you're still considering, or are you setting that > aside for the time being? > > I ask because if you are happy with how things are now, we could close > this bug. Right, let's close this bug. If someone wants to implement a new option, it's easy to open a new feature request. ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-29 18:00 ` Sean Whitton 2023-12-29 19:27 ` Eli Zaretskii @ 2024-01-10 3:12 ` john muhl via Bug reports for GNU Emacs, the Swiss army knife of text editors 2024-01-10 17:55 ` Sean Whitton 1 sibling, 1 reply; 45+ messages in thread From: john muhl via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-01-10 3:12 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, Eli Zaretskii, Eshel Yaron, Juri Linkov [-- Attachment #1: Type: text/plain, Size: 1161 bytes --] Sean Whitton <spwhitton@spwhitton.name> writes: I forgot the CCs. Sorry Sean for the double email. > Hello, > > On Fri 29 Dec 2023 at 05:47pm GMT, Sean Whitton wrote: > >> I'm not sure whether to close the bug or not, because there remains the >> behavioural change for icomplete-in-buffer since Emacs 29.1. > > I've found a work around for the behavioural change: > > (setopt completion-auto-help t) > (advice-add 'completion-at-point :after #'minibuffer-hide-completions) > > So maybe we should just add something explaining this to NEWS? > > The default value of completion-auto-help is t, but I had it set to > `lazy'. > If someone wants the Emacs 29 behaviour back, they'll need to ensure > completion-auto-help is t, so I think we should mention it somewhere. > Essentially, completion-auto-help now affects both the *Completions* > buffer and icomplete-in-buffer's display. This commit (d7ff14fcba6) caused an eshell test to start failing. It seems like the test was written to account for the above mentioned bug in pcomplete but wasn’t sure. Attached is the test output and the change in the test to fix it. [-- Attachment #2: em-cmpl-tests.log --] [-- Type: text/plain, Size: 4900 bytes --] Running 27 tests (2024-01-09 20:53:56-0600, selector `(not (or (tag :expensive-test) (tag :unstable) (tag :nativecomp)))') Loading em-alias... Loading em-banner... Loading em-basic... Loading em-extpipe... Loading em-glob... Loading em-ls... Loading em-pred... Loading em-prompt... Loading em-script... Loading em-term... passed 1/27 em-cmpl-test/command-completion (0.031879 sec) passed 2/27 em-cmpl-test/file-completion/after-list (0.002264 sec) passed 3/27 em-cmpl-test/file-completion/glob (0.001335 sec) Test em-cmpl-test/file-completion/non-unique backtrace: signal(ert-test-failed (((should (looking-at "Complete, but not uniq ert-fail(((should (looking-at "Complete, but not unique")) :form (lo (if (unwind-protect (setq value-67 (apply fn-65 args-66)) (setq form (let (form-description-69) (if (unwind-protect (setq value-67 (apply (let ((value-67 'ert-form-evaluation-aborted-68)) (let (form-descrip (let* ((fn-65 #'looking-at) (args-66 (condition-case err (list "Comp (save-excursion (goto-char (point-max)) (forward-line -1) (let* ((fn (save-current-buffer (set-buffer (messages-buffer)) (save-excursion (progn (write-region nil nil (expand-file-name "file.txt")) (write-r (unwind-protect (progn (write-region nil nil (expand-file-name "file (let* ((coding-system-for-write nil) (temp-file (file-name-as-direct (save-current-buffer (set-buffer eshell-buffer) (let* ((coding-syste (unwind-protect (save-current-buffer (set-buffer eshell-buffer) (let (let* ((process-environment (cons "HISTFILE" process-environment)) ( (progn (let* ((process-environment (cons "HISTFILE" process-environm (unwind-protect (progn (let* ((process-environment (cons "HISTFILE" (let* ((coding-system-for-write nil) (temp-file (file-name-as-direct (save-current-buffer (let* ((coding-system-for-write nil) (temp-file (closure (t) nil (save-current-buffer (let* ((coding-system-for-writ #f(compiled-function () #<bytecode 0x13fdb98997904ea3>)() handler-bind-1(#f(compiled-function () #<bytecode 0x13fdb98997904ea3 ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test ert-run-test(#s(ert-test :name em-cmpl-test/file-completion/non-uniq ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m ert-run-tests((not (or (tag :expensive-test) (tag :unstable) (tag :n ert-run-tests-batch((not (or (tag :expensive-test) (tag :unstable) ( ert-run-tests-batch-and-exit((not (or (tag :expensive-test) (tag :un eval((ert-run-tests-batch-and-exit '(not (or (tag :expensive-test) ( command-line-1(("-L" ":." "-l" "ert" "-l" "lisp/eshell/em-cmpl-tests command-line() normal-top-level() Test em-cmpl-test/file-completion/non-unique condition: (ert-test-failed ((should (looking-at "Complete, but not unique")) :form (looking-at "Complete, but not unique") :value nil)) FAILED 4/27 em-cmpl-test/file-completion/non-unique (0.002395 sec) at lisp/eshell/em-cmpl-tests.el:172 passed 5/27 em-cmpl-test/file-completion/unique (0.002452 sec) passed 6/27 em-cmpl-test/lisp-function-completion (0.010890 sec) passed 7/27 em-cmpl-test/lisp-symbol-completion (0.007067 sec) passed 8/27 em-cmpl-test/parse-arguments/multiple-dots (0.000700 sec) passed 9/27 em-cmpl-test/parse-arguments/pipeline (0.000633 sec) passed 10/27 em-cmpl-test/parse-arguments/unevaluated-inner-subcommand (0.000742 sec) passed 11/27 em-cmpl-test/parse-arguments/unevaluated-lisp-form (0.001168 sec) passed 12/27 em-cmpl-test/parse-arguments/unevaluated-subcommand (0.001241 sec) passed 13/27 em-cmpl-test/parse-arguments/variable/list (0.000637 sec) passed 14/27 em-cmpl-test/parse-arguments/variable/nil (0.000621 sec) passed 15/27 em-cmpl-test/parse-arguments/variable/numeric (0.000599 sec) passed 16/27 em-cmpl-test/parse-arguments/variable/splice (0.000613 sec) passed 17/27 em-cmpl-test/quoted-variable-ref-completion (0.010336 sec) passed 18/27 em-cmpl-test/special-ref-completion/buffer (0.004122 sec) passed 19/27 em-cmpl-test/special-ref-completion/implicit-buffer (0.002344 sec) passed 20/27 em-cmpl-test/special-ref-completion/marker (0.013179 sec) passed 21/27 em-cmpl-test/special-ref-completion/type (0.003534 sec) passed 22/27 em-cmpl-test/subcommand-completion (0.027562 sec) passed 23/27 em-cmpl-test/user-ref-completion (0.001779 sec) passed 24/27 em-cmpl-test/variable-assign-completion (0.001592 sec) passed 25/27 em-cmpl-test/variable-assign-completion/non-assignment (0.002060 sec) passed 26/27 em-cmpl-test/variable-ref-completion (0.006356 sec) passed 27/27 em-cmpl-test/variable-ref-completion/directory (0.010075 sec) Ran 27 tests, 26 results as expected, 1 unexpected (2024-01-09 20:53:56-0600, 0.257441 sec) 1 unexpected results: FAILED em-cmpl-test/file-completion/non-unique [-- Attachment #3: Type: text/plain, Size: 459 bytes --] --- a/test/lisp/eshell/em-cmpl-tests.el +++ b/test/lisp/eshell/em-cmpl-tests.el @@ -186,7 +186,7 @@ em-cmpl-test/file-completion/non-unique (save-excursion (goto-char (point-max)) (forward-line -1) - (should (looking-at "Complete, but not unique"))))))) + (should (looking-at "Making completion list..."))))))) (ert-deftest em-cmpl-test/file-completion/glob () "Test completion of file names using a glob." ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2024-01-10 3:12 ` john muhl via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-01-10 17:55 ` Sean Whitton 2024-01-17 19:18 ` Jim Porter 0 siblings, 1 reply; 45+ messages in thread From: Sean Whitton @ 2024-01-10 17:55 UTC (permalink / raw) To: Jim Porter; +Cc: 67661, Eli Zaretskii, john muhl, Eshel Yaron, Juri Linkov Hello, On Tue 09 Jan 2024 at 09:12pm -06, john muhl wrote: > This commit (d7ff14fcba6) caused an eshell test to start > failing. It seems like the test was written to account for the > above mentioned bug in pcomplete but wasn’t sure. Attached is > the test output and the change in the test to fix it. > > > > --- a/test/lisp/eshell/em-cmpl-tests.el > +++ b/test/lisp/eshell/em-cmpl-tests.el > @@ -186,7 +186,7 @@ em-cmpl-test/file-completion/non-unique > (save-excursion > (goto-char (point-max)) > (forward-line -1) > - (should (looking-at "Complete, but not unique"))))))) > + (should (looking-at "Making completion list..."))))))) > > (ert-deftest em-cmpl-test/file-completion/glob () > "Test completion of file names using a glob." Jim, does this seem reasonable? -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2024-01-10 17:55 ` Sean Whitton @ 2024-01-17 19:18 ` Jim Porter 0 siblings, 0 replies; 45+ messages in thread From: Jim Porter @ 2024-01-17 19:18 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, Eli Zaretskii, john muhl, Eshel Yaron, Juri Linkov On 1/10/2024 9:55 AM, Sean Whitton wrote: >> --- a/test/lisp/eshell/em-cmpl-tests.el >> +++ b/test/lisp/eshell/em-cmpl-tests.el >> @@ -186,7 +186,7 @@ em-cmpl-test/file-completion/non-unique >> (save-excursion >> (goto-char (point-max)) >> (forward-line -1) >> - (should (looking-at "Complete, but not unique"))))))) >> + (should (looking-at "Making completion list..."))))))) >> >> (ert-deftest em-cmpl-test/file-completion/glob () >> "Test completion of file names using a glob." > > Jim, does this seem reasonable? Sorry, I missed this the first time around (I've got a lot of other stuff I'm trying to balance at the moment). I think this would fix the issue, but I've instead pushed 5f5faad2497 which solves this in a more-direct way by checking whether the *Completions* buffer is visible. That's what the test is really trying to test anyway. ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-09 16:03 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors 2023-12-09 16:07 ` Sean Whitton @ 2023-12-09 16:22 ` Eli Zaretskii 1 sibling, 0 replies; 45+ messages in thread From: Eli Zaretskii @ 2023-12-09 16:22 UTC (permalink / raw) To: Eshel Yaron; +Cc: 67661, 67001, spwhitton, juri > From: Eshel Yaron <me@eshelyaron.com> > Cc: 67661@debbugs.gnu.org, juri@linkov.net, 67001@debbugs.gnu.org, > spwhitton@spwhitton.name > Date: Sat, 09 Dec 2023 17:03:57 +0100 > > Eli Zaretskii <eliz@gnu.org> writes: > > > That's not what I see in Emacs 29. There' the first TAB shows only > > the in-buffer completions, and the second TAB pops up the > > *Completions* buffer (without removing the in-buffer completions). > > Did you try with "l" before point instead of "ls" as I suggested? No, because Sean's recipe clearly said "ls<TAB>". ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-06 15:30 bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer Sean Whitton 2023-12-06 17:13 ` Juri Linkov 2023-12-06 18:41 ` Eli Zaretskii @ 2023-12-07 17:28 ` Juri Linkov 2023-12-07 22:04 ` Sean Whitton 2 siblings, 1 reply; 45+ messages in thread From: Juri Linkov @ 2023-12-07 17:28 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661 > 1. emacs -q > 2. (setopt icomplete-in-buffer t) > 3. M-x icomplete-mode > 4. M-x eshell > 5. try to tab-complete something where there is more than one possible > completion, e.g. ls<TAB> in a directory with many files. > > Previously you would get the icomplete in buffer completion. > Now, additionally, *Completions* pops up, but it doesn't make sense to > have both. It's possible to hide *Completions* when icomplete-mode is enabled, but I'm not sure if everyone will like this. For example, I'm using both icomplete-mode and the *Completions* buffer at the same time in the minibuffer. And in a regular buffer we should keep for users the ability to pop up *Completions* in addition to in-buffer completions. Maybe the best solution would be to use something like in completion-preview-mode where you can use in-buffer completions and still be able to type M-C-i to pop up the *Completions* buffer. ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-07 17:28 ` Juri Linkov @ 2023-12-07 22:04 ` Sean Whitton 2023-12-08 6:28 ` Eli Zaretskii 0 siblings, 1 reply; 45+ messages in thread From: Sean Whitton @ 2023-12-07 22:04 UTC (permalink / raw) To: Juri Linkov; +Cc: 67661 Hello, On Thu 07 Dec 2023 at 07:28pm +02, Juri Linkov wrote: >> 1. emacs -q >> 2. (setopt icomplete-in-buffer t) >> 3. M-x icomplete-mode >> 4. M-x eshell >> 5. try to tab-complete something where there is more than one possible >> completion, e.g. ls<TAB> in a directory with many files. >> >> Previously you would get the icomplete in buffer completion. >> Now, additionally, *Completions* pops up, but it doesn't make sense to >> have both. > > It's possible to hide *Completions* when icomplete-mode is enabled, > but I'm not sure if everyone will like this. For example, > I'm using both icomplete-mode and the *Completions* buffer > at the same time in the minibuffer. And in a regular buffer > we should keep for users the ability to pop up *Completions* > in addition to in-buffer completions. > > Maybe the best solution would be to use something like > in completion-preview-mode where you can use in-buffer > completions and still be able to type M-C-i to pop up > the *Completions* buffer. This is a regression though, right? It didn't use to pop up. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-07 22:04 ` Sean Whitton @ 2023-12-08 6:28 ` Eli Zaretskii 2023-12-08 10:19 ` Sean Whitton 0 siblings, 1 reply; 45+ messages in thread From: Eli Zaretskii @ 2023-12-08 6:28 UTC (permalink / raw) To: Sean Whitton; +Cc: 67661, juri > Cc: 67661@debbugs.gnu.org > From: Sean Whitton <spwhitton@spwhitton.name> > Date: Thu, 07 Dec 2023 22:04:18 +0000 > > Hello, > > On Thu 07 Dec 2023 at 07:28pm +02, Juri Linkov wrote: > > >> 1. emacs -q > >> 2. (setopt icomplete-in-buffer t) > >> 3. M-x icomplete-mode > >> 4. M-x eshell > >> 5. try to tab-complete something where there is more than one possible > >> completion, e.g. ls<TAB> in a directory with many files. > >> > >> Previously you would get the icomplete in buffer completion. > >> Now, additionally, *Completions* pops up, but it doesn't make sense to > >> have both. > > > > It's possible to hide *Completions* when icomplete-mode is enabled, > > but I'm not sure if everyone will like this. For example, > > I'm using both icomplete-mode and the *Completions* buffer > > at the same time in the minibuffer. And in a regular buffer > > we should keep for users the ability to pop up *Completions* > > in addition to in-buffer completions. > > > > Maybe the best solution would be to use something like > > in completion-preview-mode where you can use in-buffer > > completions and still be able to type M-C-i to pop up > > the *Completions* buffer. > > This is a regression though, right? It didn't use to pop up. Once again: it did. The *Completions* buffer always popped up the second time you type TAB. The problem here is that the first TAB doesn't show the in-buffer completion. _That_ is the regression we should try fixing. ^ permalink raw reply [flat|nested] 45+ messages in thread
* bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer 2023-12-08 6:28 ` Eli Zaretskii @ 2023-12-08 10:19 ` Sean Whitton 0 siblings, 0 replies; 45+ messages in thread From: Sean Whitton @ 2023-12-08 10:19 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 67661, juri Hello, On Fri 08 Dec 2023 at 08:28am +02, Eli Zaretskii wrote: >> Cc: 67661@debbugs.gnu.org >> From: Sean Whitton <spwhitton@spwhitton.name> >> Date: Thu, 07 Dec 2023 22:04:18 +0000 >> >> Hello, >> >> On Thu 07 Dec 2023 at 07:28pm +02, Juri Linkov wrote: >> >> >> 1. emacs -q >> >> 2. (setopt icomplete-in-buffer t) >> >> 3. M-x icomplete-mode >> >> 4. M-x eshell >> >> 5. try to tab-complete something where there is more than one possible >> >> completion, e.g. ls<TAB> in a directory with many files. >> >> >> >> Previously you would get the icomplete in buffer completion. >> >> Now, additionally, *Completions* pops up, but it doesn't make sense to >> >> have both. >> > >> > It's possible to hide *Completions* when icomplete-mode is enabled, >> > but I'm not sure if everyone will like this. For example, >> > I'm using both icomplete-mode and the *Completions* buffer >> > at the same time in the minibuffer. And in a regular buffer >> > we should keep for users the ability to pop up *Completions* >> > in addition to in-buffer completions. >> > >> > Maybe the best solution would be to use something like >> > in completion-preview-mode where you can use in-buffer >> > completions and still be able to type M-C-i to pop up >> > the *Completions* buffer. >> >> This is a regression though, right? It didn't use to pop up. > > Once again: it did. The *Completions* buffer always popped up the > second time you type TAB. The problem here is that the first TAB > doesn't show the in-buffer completion. _That_ is the regression we > should try fixing. Right, that's what I meant. -- Sean Whitton ^ permalink raw reply [flat|nested] 45+ messages in thread
end of thread, other threads:[~2024-01-17 19:18 UTC | newest] Thread overview: 45+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-12-06 15:30 bug#67661: 30.0.50; *Completions* has started popping up for icomplete-in-buffer Sean Whitton 2023-12-06 17:13 ` Juri Linkov 2023-12-06 18:14 ` Sean Whitton 2023-12-06 18:41 ` Eli Zaretskii 2023-12-07 11:42 ` Sean Whitton 2023-12-09 12:09 ` Sean Whitton 2023-12-09 13:08 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors 2023-12-09 13:25 ` Eli Zaretskii 2023-12-09 14:13 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors 2023-12-09 14:40 ` Eli Zaretskii 2023-12-09 15:22 ` Sean Whitton 2023-12-09 16:03 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors 2023-12-09 16:07 ` Sean Whitton 2023-12-09 17:19 ` Juri Linkov 2023-12-09 19:04 ` Sean Whitton 2023-12-10 17:46 ` Juri Linkov 2023-12-10 21:42 ` Sean Whitton 2023-12-11 17:15 ` Juri Linkov 2023-12-15 12:28 ` Sean Whitton 2023-12-19 17:29 ` Juri Linkov 2023-12-19 18:31 ` Sean Whitton 2023-12-19 18:58 ` Juri Linkov 2023-12-20 10:34 ` Sean Whitton 2023-12-20 17:14 ` Juri Linkov 2023-12-22 12:00 ` Sean Whitton 2023-12-23 17:38 ` Juri Linkov 2023-12-29 17:47 ` Sean Whitton 2023-12-29 18:00 ` Sean Whitton 2023-12-29 19:27 ` Eli Zaretskii 2023-12-29 20:24 ` Sean Whitton 2023-12-30 6:30 ` Eli Zaretskii 2023-12-30 10:41 ` Sean Whitton 2023-12-30 17:52 ` Juri Linkov 2023-12-30 19:43 ` Sean Whitton 2023-12-30 17:50 ` Juri Linkov 2023-12-30 19:43 ` Sean Whitton 2023-12-31 8:29 ` Juri Linkov 2024-01-10 3:12 ` john muhl via Bug reports for GNU Emacs, the Swiss army knife of text editors 2024-01-10 17:55 ` Sean Whitton 2024-01-17 19:18 ` Jim Porter 2023-12-09 16:22 ` Eli Zaretskii 2023-12-07 17:28 ` Juri Linkov 2023-12-07 22:04 ` Sean Whitton 2023-12-08 6:28 ` Eli Zaretskii 2023-12-08 10:19 ` Sean Whitton
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).