changeset 30721:43684600b975

(echo_area_display): Display thoroughly if input is pending. Bind redisplay-dont-pause to t during the redisplay. in case input is pending.
author Gerd Moellmann <gerd@gnu.org>
date Wed, 09 Aug 2000 18:40:39 +0000
parents 64f3338f72d8
children 1c138ac4bf6d
files src/xdisp.c
diffstat 1 files changed, 17 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Wed Aug 09 18:39:58 2000 +0000
+++ b/src/xdisp.c	Wed Aug 09 18:40:39 2000 +0000
@@ -6239,15 +6239,27 @@
 
       if (update_frame_p)
 	{
-	  /* Not called from redisplay_internal.  If we changed
-	     window configuration, we must redisplay thoroughly.
-	     Otherwise, we can do with updating what we displayed
+	  /* Not called from redisplay_internal.  If we changed window
+	     configuration, we must redisplay thoroughly, of course.
+	     
+	     Likewise if input is pending, because the pending input
+	     can have interrupted a previous redisplay, or redisplay
+	     wasn't called because of the pending input (see
+	     keyboard.c).  In both cases, we would display the message
+	     fine, but the rest of the display would be garbage.
+
+	     Otherwise, we can do with updating just what we displayed
 	     above.  */
-	  if (window_height_changed_p)
-	    {
+
+	  if (window_height_changed_p || detect_input_pending ())
+	    {
+	      int count = specpdl_ptr - specpdl;
+	      
+	      specbind (Qredisplay_dont_pause, Qt);
 	      ++windows_or_buffers_changed;
 	      ++update_mode_lines;
 	      redisplay_internal (0);
+	      unbind_to (count, Qnil);
 	    }
 	  else if (FRAME_WINDOW_P (f))
 	    {