GNU bug report logs - #25644
26.0.50; Problematic transient map in minibuffer-force-complete

Previous Next

Package: emacs;

Reported by: Michael Heerdegen <michael_heerdegen <at> web.de>

Date: Tue, 7 Feb 2017 15:53:01 UTC

Severity: normal

Found in version 26.0.50

Done: Stefan Monnier <monnier <at> IRO.UMontreal.CA>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 25644 in the body.
You can then email your comments to 25644 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#25644; Package emacs. (Tue, 07 Feb 2017 15:53:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Michael Heerdegen <michael_heerdegen <at> web.de>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 07 Feb 2017 15:53:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Michael Heerdegen <michael_heerdegen <at> web.de>
To: bug-gnu-emacs <at> gnu.org
Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>
Subject: 26.0.50; Problematic transient map in minibuffer-force-complete
Date: Tue, 07 Feb 2017 16:52:19 +0100
Hi,

[I CC Stefan because he has installed the fix for #12221 that added the
code that bites me]

I like to use icomplete-mode, but I prefer to have the bindings of RET
and C-j switched.

This sometimes collides with the transient-map installed by
minibuffer-force-complete.

Here is a random recipe for emacs -Q:

Setup:

#+begin_src emacs-lisp
(icomplete-mode)
(define-key icomplete-minibuffer-map [return]       #'icomplete-force-complete-and-exit)
(define-key icomplete-minibuffer-map [(control ?j)] #'exit-minibuffer)
#+end_src

Now (just a silly example):

M-x epatch

- Answer y to the question whether the patch is in a buffer
- Hit RET to confirm the suggested default

Note that nothing happens, or you get a `ding'.  The second RET works
OTOH.  Without the "Setup" part it works as expected however.

I debugged a bit and found that in the first place, the transient map
installed by minibuffer-force-complete shadows the (my) binding of RET.

Someone with insight into that code (Stefan, probably): am I'm doing
something forbidden, or should we improve that code?


Thanks,

Michael.


In GNU Emacs 26.0.50.15 (x86_64-pc-linux-gnu, GTK+ Version 3.22.7)
 of 2017-02-06 built on drachen
Repository revision: d45dbccc5d2360818e70bbb0bc816c62c8cf6cbe
Windowing system distributor 'The X.Org Foundation', version 11.0.11901000
System Description:	Debian GNU/Linux 9.0 (stretch)





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#25644; Package emacs. (Tue, 07 Feb 2017 16:24:02 GMT) Full text and rfc822 format available.

Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Michael Heerdegen <michael_heerdegen <at> web.de>
Cc: bug-gnu-emacs <at> gnu.org
Subject: Re: 26.0.50; Problematic transient map in minibuffer-force-complete
Date: Tue, 07 Feb 2017 11:23:43 -0500
> (define-key icomplete-minibuffer-map [return]
>             #'icomplete-force-complete-and-exit)

FWIW, I think this should be

   (define-key icomplete-minibuffer-map [?\r]
               #'icomplete-force-complete-and-exit)
aka
   (define-key icomplete-minibuffer-map (kbd "RET")
               #'icomplete-force-complete-and-exit)

> M-x epatch
> - Answer y to the question whether the patch is in a buffer
> - Hit RET to confirm the suggested default
> Note that nothing happens, or you get a `ding'.  The second RET works
> OTOH.  Without the "Setup" part it works as expected however.
> I debugged a bit and found that in the first place, the transient map
> installed by minibuffer-force-complete shadows the (my) binding of RET.
> Someone with insight into that code (Stefan, probably): am I'm doing
> something forbidden, or should we improve that code?

I can't see anything in your Setup code which justifies the behavior
you're seeing, so it seems like a bug somewhere.  Probably in the
case of force-complete-and-exit, we should prevent/disable the transient-map.

BTW, if you do

    M-x epatch
    - Answer y to the question whether the patch is in a buffer
    - C-h k RET

what does it say?


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#25644; Package emacs. (Tue, 07 Feb 2017 16:42:02 GMT) Full text and rfc822 format available.

Message #11 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Michael Heerdegen <michael_heerdegen <at> web.de>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: bug-gnu-emacs <at> gnu.org
Subject: Re: 26.0.50; Problematic transient map in minibuffer-force-complete
Date: Tue, 07 Feb 2017 17:41:35 +0100
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:

> > (define-key icomplete-minibuffer-map [return]
> >             #'icomplete-force-complete-and-exit)
>
> FWIW, I think this should be
>
>    (define-key icomplete-minibuffer-map [?\r]
>                #'icomplete-force-complete-and-exit)
> aka
>    (define-key icomplete-minibuffer-map (kbd "RET")
>                #'icomplete-force-complete-and-exit)

Why?


> BTW, if you do
>
>     M-x epatch
>     - Answer y to the question whether the patch is in a buffer
>     - C-h k RET
>
> what does it say?

It says

| <return> runs the command icomplete-force-complete-and-exit, which is
| an interactive compiled Lisp function in `icomplete.el'.

but I know that this is wrong (it doesn't consider the transient map).
This is one reason why I needed more than one hour before I found out
what's going on.

FWIW `interaction-log' says that the command run has been


| #[0 \303.\305\300`\301\302$)\207 [#<marker at 1 in  *Minibuf-1*> #[771 \211\301>\203.\302\303\304\305\306.."\307"\310\311%\202..\312...$\207 [obarray (nil t) make-byte-code 257 \301.!\205.\300\302.!\232\206.\211\303N?\207 vconcat vector [symbol-name byte-obsolete-info] 4 
| 
| (fn SYM) complete-with-action] 10 
| 
| (fn STRING PRED ACTION)] commandp nil completion-extra-properties
| completion-in-region] 5 Cycle through the possible completions. nil]
| *Minibuf-1*




Michael.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#25644; Package emacs. (Wed, 23 Jan 2019 17:39:02 GMT) Full text and rfc822 format available.

Message #14 received at 25644 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
To: Michael Heerdegen <michael_heerdegen <at> web.de>
Cc: 25644 <at> debbugs.gnu.org
Subject: Re: bug#25644: 26.0.50;
 Problematic transient map in minibuffer-force-complete
Date: Wed, 23 Jan 2019 12:38:55 -0500
I believe Joao has recently installed changes to minibuffer.el and
icomplete.el which fincally fix this bug.  Could you confirm?


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#25644; Package emacs. (Thu, 24 Jan 2019 22:55:01 GMT) Full text and rfc822 format available.

Message #17 received at 25644 <at> debbugs.gnu.org (full text, mbox):

From: Michael Heerdegen <michael_heerdegen <at> web.de>
To: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
Cc: 25644 <at> debbugs.gnu.org
Subject: Re: bug#25644: 26.0.50;
 Problematic transient map in minibuffer-force-complete
Date: Thu, 24 Jan 2019 23:54:43 +0100
Stefan Monnier <monnier <at> IRO.UMontreal.CA> writes:

> I believe Joao has recently installed changes to minibuffer.el and
> icomplete.el which fincally fix this bug.  Could you confirm?

Can't say for sure, I'm not using icomplete currently.  But my original
recipe seems indeed to be fixed.


Thanks,

Michael.




Reply sent to Stefan Monnier <monnier <at> IRO.UMontreal.CA>:
You have taken responsibility. (Fri, 25 Jan 2019 14:00:02 GMT) Full text and rfc822 format available.

Notification sent to Michael Heerdegen <michael_heerdegen <at> web.de>:
bug acknowledged by developer. (Fri, 25 Jan 2019 14:00:03 GMT) Full text and rfc822 format available.

Message #22 received at 25644-done <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
To: 25644-done <at> debbugs.gnu.org
Subject: Re: bug#25644: 26.0.50;
 Problematic transient map in minibuffer-force-complete
Date: Fri, 25 Jan 2019 08:59:31 -0500
> Can't say for sure, I'm not using icomplete currently.  But my original
> recipe seems indeed to be fixed.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 23 Feb 2019 12:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 6 years and 118 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.