changeset 13267:12d329dd9940

(read_char): If we reread a char, the next pause can start echoing despite a remaining echo area message. (ok_to_echo_at_next_pause): New variable. (cancel_echoing): Clear ok_to_echo_at_next_pause.
author Richard M. Stallman <rms@gnu.org>
date Sat, 21 Oct 1995 23:17:06 +0000
parents d6bba071525c
children 6d2b9a2c1ca4
files src/keyboard.c
diffstat 1 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/keyboard.c	Sat Oct 21 23:16:16 1995 +0000
+++ b/src/keyboard.c	Sat Oct 21 23:17:06 1995 +0000
@@ -151,6 +151,10 @@
 /* True while displaying for echoing.   Delays C-g throwing.  */
 static int echoing;
 
+/* True means we can start echoing at the next input pause
+   even though there is something in the echo area.  */
+static int ok_to_echo_at_next_pause;
+
 /* Nonzero means disregard local maps for the menu bar.  */
 static int inhibit_local_menu_bar_menus;
 
@@ -655,6 +659,7 @@
   current_kboard->immediate_echo = 0;
   current_kboard->echoptr = current_kboard->echobuf;
   current_kboard->echo_after_prompt = -1;
+  ok_to_echo_at_next_pause = 0;
 }
 
 /* Return the length of the current echo string.  */
@@ -1758,7 +1763,8 @@
 
   /* Message turns off echoing unless more keystrokes turn it on again. */
   if (echo_area_glyphs && *echo_area_glyphs
-      && echo_area_glyphs != current_kboard->echobuf)
+      && echo_area_glyphs != current_kboard->echobuf
+      && ! ok_to_echo_at_next_pause)
     cancel_echoing ();
   else
     /* If already echoing, continue.  */
@@ -1833,7 +1839,8 @@
       && this_command_key_count > 0
       && ! noninteractive
       && echo_keystrokes > 0
-      && (echo_area_glyphs == 0 || *echo_area_glyphs == 0))
+      && (echo_area_glyphs == 0 || *echo_area_glyphs == 0
+	  || ok_to_echo_at_next_pause))
     {
       Lisp_Object tem0;
 
@@ -2130,6 +2137,9 @@
       echo_char (c);
       if (! NILP (also_record))
 	echo_char (also_record);
+      /* Once we reread a character, echoing can happen
+	 the next time we pause to read a new one.  */
+      ok_to_echo_at_next_pause = 1;
     }
 
   /* Record this character as part of the current key.  */