changeset 34164:cfbe6873d494

(record_char): Record `help-echo' input events in recent_keys only if they display some help. Don't record `help-echo' events as macro char.
author Gerd Moellmann <gerd@gnu.org>
date Mon, 04 Dec 2000 12:22:46 +0000
parents faa3e4d4deea
children 3b3a64fbcb05
files src/keyboard.c
diffstat 1 files changed, 16 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/keyboard.c	Mon Dec 04 06:27:35 2000 +0000
+++ b/src/keyboard.c	Mon Dec 04 12:22:46 2000 +0000
@@ -2891,10 +2891,20 @@
 record_char (c)
      Lisp_Object c;
 {
-  total_keys++;
-  XVECTOR (recent_keys)->contents[recent_keys_index] = c;
-  if (++recent_keys_index >= NUM_RECENT_KEYS)
-    recent_keys_index = 0;
+  Lisp_Object help;
+
+  /* Don't record `help-echo' in recent_keys unless it shows some help
+     message.  */
+  if (!CONSP (c)
+      || !EQ (XCAR (c), Qhelp_echo)
+      || (help = Fnth (make_number (2), c),
+	  !NILP (help)))
+    {
+      total_keys++;
+      ASET (recent_keys, recent_keys_index, c);
+      if (++recent_keys_index >= NUM_RECENT_KEYS)
+	recent_keys_index = 0;
+    }
 
   /* Write c to the dribble file.  If c is a lispy event, write
      the event's symbol to the dribble file, in <brackets>.  Bleaugh.
@@ -2928,7 +2938,8 @@
       fflush (dribble);
     }
 
-  store_kbd_macro_char (c);
+  if (!CONSP (c) || !EQ (Qhelp_echo, XCAR (c)))
+    store_kbd_macro_char (c);
 
   num_nonmacro_input_events++;
 }