* xdisp.c (redisplay_window): If window_end_valid is cleared due to
authorDmitry Antipov <dmantipov@yandex.ru>
Wed, 14 Aug 2013 07:25:45 +0000 (11:25 +0400)
committerDmitry Antipov <dmantipov@yandex.ru>
Wed, 14 Aug 2013 07:25:45 +0000 (11:25 +0400)
non-zero windows_or_buffers_changed, clear current_matrix_up_to_date_p
and so do not call to try_cursor_movement for that window.

src/ChangeLog
src/xdisp.c

index a120cf1..c8a1de4 100644 (file)
@@ -10,6 +10,9 @@
 
        * xdisp.c (adjust_window_ends): Move duplicated code to new function.
        (try_window, try_window_reusing_current_matrix, try_window_id): Use it.
+       (redisplay_window): If window_end_valid is cleared due to non-zero
+       windows_or_buffers_changed, clear current_matrix_up_to_date_p and
+       so do not call to try_cursor_movement for that window.
 
 2013-08-14  Dmitry Antipov  <dmantipov@yandex.ru>
 
index 82b528c..4d0b0ab 100644 (file)
@@ -15449,8 +15449,8 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
        && !current_buffer->clip_changed
        && !window_outdated (w));
 
-  /* When windows_or_buffers_changed is non-zero, we can't rely on
-     the window end being valid, so set it to nil there.  */
+  /* When windows_or_buffers_changed is non-zero, we can't rely
+     on the window end being valid, so set it to zero there.  */
   if (windows_or_buffers_changed)
     {
       /* If window starts on a continuation line, maybe adjust the
@@ -15459,6 +15459,9 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
        compute_window_start_on_continuation_line (w);
 
       w->window_end_valid = 0;
+      /* If so, we also can't rely on current matrix
+        and should not fool try_cursor_movement below.  */
+      current_matrix_up_to_date_p = 0;
     }
 
   /* Some sanity checks.  */