]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't output spurious prefixes in read-char-exclusive
authorLars Ingebrigtsen <larsi@gnus.org>
Mon, 24 Jan 2022 17:17:10 +0000 (18:17 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 24 Jan 2022 17:19:38 +0000 (18:19 +0100)
* src/keyboard.c (read_char): Don't touch the echo area if
Vecho_keystrokes is nil.
* src/lread.c (read_filtered_event): Bind echo_keystrokes to nil
to avoid outputting prefixes we're not going to act on anyway
(bug#19718).

src/keyboard.c
src/lread.c

index 441c23e10c79c0bf7ef6551fb09fb3b37129b8a5..9242e8dc624aca620a6d9a600a0c805e414be76c 100644 (file)
@@ -3059,12 +3059,13 @@ read_char (int commandflag, Lisp_Object map,
 
   /* Now wipe the echo area, except for help events which do their
      own stuff with the echo area.  */
-  if (!CONSP (c)
-      || (!(EQ (Qhelp_echo, XCAR (c)))
-         && !(EQ (Qswitch_frame, XCAR (c)))
-         /* Don't wipe echo area for select window events: These might
-            get delayed via `mouse-autoselect-window' (Bug#11304).  */
-         && !(EQ (Qselect_window, XCAR (c)))))
+  if (!NILP (Vecho_keystrokes)
+      && (!CONSP (c)
+         || (!(EQ (Qhelp_echo, XCAR (c)))
+             && !(EQ (Qswitch_frame, XCAR (c)))
+             /* Don't wipe echo area for select window events: These might
+                get delayed via `mouse-autoselect-window' (Bug#11304).  */
+             && !(EQ (Qselect_window, XCAR (c))))))
     {
       if (!NILP (echo_area_buffer[0]))
        {
index 9910db27de7c9c25df821962bef45ce3dc23eb55..ec54d2d81add3150a8d7b4d6a6f90eb94e4473ff 100644 (file)
@@ -705,8 +705,13 @@ read_filtered_event (bool no_switch_frame, bool ascii_required,
   /* Read until we get an acceptable event.  */
  retry:
   do
-    val = read_char (0, Qnil, (input_method ? Qnil : Qt), 0,
-                    NUMBERP (seconds) ? &end_time : NULL);
+    {
+      ptrdiff_t count = SPECPDL_INDEX ();
+      specbind (Qecho_keystrokes, Qnil);
+      val = read_char (0, Qnil, (input_method ? Qnil : Qt), 0,
+                      NUMBERP (seconds) ? &end_time : NULL);
+      unbind_to (count, Qnil);
+    }
   while (FIXNUMP (val) && XFIXNUM (val) == -2); /* wrong_kboard_jmpbuf */
 
   if (BUFFERP (val))