Subject: bug#5923: 23.1.95; minibuffer-message discards input events

From: "Drew Adams" <[email-masked]>
Date: Sat, 10 Apr 2010 09:52:20 -0700

Sorry, I don't have the time to try to track this down further.
 
Suffice it to say that starting with Emacs 23 `minibuffer-message'
discards input events during its `sit-for', that is while it displays
its message.

Dunno if this is a general `sit-for' bug or a `minibuffer-message'
bug. In effect, the `sit-for' is not interrupted by an input event
- it acts like `sleep-for'. Starting with Emacs 23,
`minibuffer-message' is coded differently (in Lisp, not C); dunno
about `sit-for'.
 
In my application, I have a key, `C-RET', bound in the minibuffer
completion maps. It performs an action, and the behavior of that
action can change if you give it a prefix arg: `C-u C-RET'. When
you give a prefix arg in this context, I call `minibuffer-message'
to echo `[prefix (4)]' (or whatever current-prefix-arg is).
 
Prior to Emacs 23, a user can hit `C-RET' after `C-u' and while
`[prefix (4)]' is displayed, and the `sit-for' is interrupted and
the action is executed immediately. Starting with Emacs 23, the
`C-RET' is ignored. A `C-RET' doesn't take effect until the
`sit-for' timeout is finished (as if it were `sleep-for').
 
I hope this is enough info for you to find and fix the bug.
I don't have time to try to track this down further.

In GNU Emacs 23.1.95.1 (i386-mingw-nt5.1.2600)
 of 2010-04-03 on G41R2F1
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (3.4) --no-opt --cflags
-Ic:/imagesupport/include'