# HG changeset patch # User Richard M. Stallman # Date 814317426 0 # Node ID 12d329dd9940946059ec58d4c23adf222f192783 # Parent d6bba071525c7d3caf3376c89675478efba6e3c1 (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. diff -r d6bba071525c -r 12d329dd9940 src/keyboard.c --- 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. */