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

From: "Drew Adams" <[email-masked]>
Date: Sun, 18 Apr 2010 23:09:31 -0700

> > > > Attached is the code I use for `C-u' in the minibuffer. I 
> > > > hope it helps.
> > > 
> > > It does.
> > > 
> > > But to tell you the truth the handling of this-command-keys and
> > > universal-argument prefix is much too delicate for me to 
> > > understand it, so I'm not surprised it doesn't work quite right
> > > if you mess with it in any non-trivial way.
> > 
> > Compare Emacs 22 (and earlier), where there is no bug.
> > 
> > The code was changed (C to Lisp, at least), and that 
> > introduced the regression.
> 
> Also, the code I use is _identical_ to the original code in 
> simple.el (Emacs 22
> version), except that it also calls `minibuffer-message'. Is 
> that really a
> "non-trivial" change?
> 
> (And in Emacs 23, `last-command-event' is used instead of 
> `last-command-char' - that is the only difference I can see
> from the Emacs 22 code.)

And changing `last-command-char' in the code to `last-command-event', for Emacs
23, does not fix the problem. It seems that the problem was introduced in the
translation from C to Lisp for the vanilla Emacs code for `minibuffer-message'.

Here is enough of the rest of the code I use to let you execute it and reproduce
the bug without doing anything extra:

(defun icicle-remap (old new map &optional oldmap)
  (define-key map (vector 'remap old) new))

(icicle-remap 'universal-argument 'icicle-universal-argument ; `C-u'
              minibuffer-local-completion-map (current-global-map))
(icicle-remap 'negative-argument  'icicle-negative-argument  ; `M--'
              minibuffer-local-completion-map (current-global-map))
(icicle-remap 'digit-argument     'icicle-digit-argument     ; `C-9'
              minibuffer-local-completion-map (current-global-map))

(defvar icicle-minibuffer-message-ok-p t)

Together with the code I sent before, this provides a full test case. It works
in Emacs 22 and doesn't work in Emacs 23.