Specifically, it eats every following key, including those not equal to
EXIT-CHAR, contrary to the intended behavior. The problem is that
(append (this-single-command-raw-keys))
gives a vector. This messes up unread-command-events, which
is not cleared subsequently. The patch below fixes the problem.
While
(append (this-single-command-raw-keys) nil)
would work, I did
(append (this-single-command-raw-keys) unread-command-events)
in case the function is used in a context where other events
were added to unread-command-events earlier.
Here's the patch, through the ^L:
--- subr.el 2015-02-09 21:49:34.000000000 -0500
+++ subr-modified.el 2015-02-09 21:50:38.000000000 -0500
@@ -2430,7 +2430,8 @@
(or (eq event exit-char)
(eq event (event-convert-list exit-char))
(setq unread-command-events
- (append (this-single-command-raw-keys))))))
+ (append (this-single-command-raw-keys)
+ unread-command-events)))))
(delete-overlay ol))))
For reference, this is with GNU Emacs 24.4.1 on Mac OS X 10.7.5.
Thanks, Chris