]> git.eshelyaron.com Git - emacs.git/commitdiff
(echo_area_display): Display thoroughly if input is
authorGerd Moellmann <gerd@gnu.org>
Wed, 9 Aug 2000 18:40:39 +0000 (18:40 +0000)
committerGerd Moellmann <gerd@gnu.org>
Wed, 9 Aug 2000 18:40:39 +0000 (18:40 +0000)
pending.  Bind redisplay-dont-pause to t during the redisplay.
in case input is pending.

src/xdisp.c

index 3f0cbc58f5ca017b3944a0182828e8706bf7ca42..79717849bd6e8d4a3c247005d6135e61d4a90dd8 100644 (file)
@@ -6239,15 +6239,27 @@ echo_area_display (update_frame_p)
 
       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))
            {