emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/xdisp.c


From: Richard M. Stallman
Subject: [Emacs-diffs] Changes to emacs/src/xdisp.c
Date: Tue, 16 Jul 2002 09:47:07 -0400

Index: emacs/src/xdisp.c
diff -c emacs/src/xdisp.c:1.765 emacs/src/xdisp.c:1.766
*** emacs/src/xdisp.c:1.765     Mon Jul 15 16:37:12 2002
--- emacs/src/xdisp.c   Tue Jul 16 09:47:07 2002
***************
*** 8420,8428 ****
       struct window *w;
       struct buffer *b;
  {
!   if (b->prevent_redisplay_optimizations_p)
!     b->clip_changed = 1;
!   else if (b->clip_changed
           && !NILP (w->window_end_valid)
           && w->current_matrix->buffer == b
           && w->current_matrix->zv == BUF_ZV (b)
--- 8420,8426 ----
       struct window *w;
       struct buffer *b;
  {
!   if (b->clip_changed
           && !NILP (w->window_end_valid)
           && w->current_matrix->buffer == b
           && w->current_matrix->zv == BUF_ZV (b)
***************
*** 8689,8694 ****
--- 8687,8693 ----
        && CHARPOS (tlbufpos) > 0
        && NILP (w->update_mode_line)
        && !current_buffer->clip_changed
+       && !current_buffer->prevent_redisplay_optimizations_p
        && FRAME_VISIBLE_P (XFRAME (w->frame))
        && !FRAME_OBSCURED_P (XFRAME (w->frame))
        /* Make sure recorded data applies to current buffer, etc.  */
***************
*** 10093,10098 ****
--- 10092,10100 ----
    struct it it;
    /* Record it now because it's overwritten.  */
    int current_matrix_up_to_date_p = 0;
+   /* This is less strict than current_matrix_up_to_date_p.
+      It indictes that the buffer contents and narrowing are unchanged.  */
+   int buffer_unchanged_p = 0;
    int temp_scroll_step = 0;
    int count = SPECPDL_INDEX ();
    int rc;
***************
*** 10114,10120 ****
    /* Has the mode line to be updated?  */
    update_mode_line = (!NILP (w->update_mode_line)
                      || update_mode_lines
!                     || buffer->clip_changed);
  
    if (MINI_WINDOW_P (w))
      {
--- 10116,10123 ----
    /* Has the mode line to be updated?  */
    update_mode_line = (!NILP (w->update_mode_line)
                      || update_mode_lines
!                     || buffer->clip_changed
!                     || buffer->prevent_redisplay_optimizations_p);
  
    if (MINI_WINDOW_P (w))
      {
***************
*** 10157,10165 ****
--- 10160,10175 ----
    current_matrix_up_to_date_p
      = (!NILP (w->window_end_valid)
         && !current_buffer->clip_changed
+        && !current_buffer->prevent_redisplay_optimizations_p
         && XFASTINT (w->last_modified) >= MODIFF
         && XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF);
  
+   buffer_unchanged_p
+     = (!NILP (w->window_end_valid)
+        && !current_buffer->clip_changed
+        && END_UNCHANGED + BEG_UNCHANGED >= Z - BEG
+        && XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF);
+ 
    /* When windows_or_buffers_changed is non-zero, we can't rely on
       the window end being valid, so set it to nil there.  */
    if (windows_or_buffers_changed)
***************
*** 10277,10284 ****
        w->window_end_valid = Qnil;
  
        /* Forget any recorded base line for line number display.  */
!       if (!current_matrix_up_to_date_p
!         || current_buffer->clip_changed)
        w->base_line_number = Qnil;
  
        /* Redisplay the mode line.  Select the buffer properly for that.
--- 10287,10293 ----
        w->window_end_valid = Qnil;
  
        /* Forget any recorded base line for line number display.  */
!       if (!buffer_unchanged_p)
        w->base_line_number = Qnil;
  
        /* Redisplay the mode line.  Select the buffer properly for that.
***************
*** 10356,10362 ****
  
    /* Handle case where text has not changed, only point, and it has
       not moved off the frame.  */
!   if (current_matrix_up_to_date_p
        && (rc = try_cursor_movement (window, startp, &temp_scroll_step),
          rc != CURSOR_MOVEMENT_CANNOT_BE_USED))
      {
--- 10365,10371 ----
  
    /* Handle case where text has not changed, only point, and it has
       not moved off the frame.  */
!   if (buffer_unchanged_p
        && (rc = try_cursor_movement (window, startp, &temp_scroll_step),
          rc != CURSOR_MOVEMENT_CANNOT_BE_USED))
      {
***************
*** 10510,10517 ****
    /* w->vscroll = 0; */
  
    /* Forget any previously recorded base line for line number display.  */
!   if (!current_matrix_up_to_date_p
!       || current_buffer->clip_changed)
      w->base_line_number = Qnil;
  
    /* Move backward half the height of the window.  */
--- 10519,10525 ----
    /* w->vscroll = 0; */
  
    /* Forget any previously recorded base line for line number display.  */
!   if (!buffer_unchanged_p)
      w->base_line_number = Qnil;
  
    /* Move backward half the height of the window.  */
***************
*** 11525,11534 ****
    if (windows_or_buffers_changed || cursor_type_changed)
      GIVE_UP (2);
  
!   /* Verify that narrowing has not changed.  This flag is also set to prevent
!      redisplay optimizations.  It would be nice to further
       reduce the number of cases where this prevents try_window_id.  */
!   if (current_buffer->clip_changed)
      GIVE_UP (3);
  
    /* Window must either use window-based redisplay or be full width.  */
--- 11533,11544 ----
    if (windows_or_buffers_changed || cursor_type_changed)
      GIVE_UP (2);
  
!   /* Verify that narrowing has not changed.
!      Also verify that we were not told to prevent redisplay optimizations.
!      It would be nice to further
       reduce the number of cases where this prevents try_window_id.  */
!   if (current_buffer->clip_changed
!       || current_buffer->prevent_redisplay_optimizations_p)
      GIVE_UP (3);
  
    /* Window must either use window-based redisplay or be full width.  */



reply via email to

[Prev in Thread] Current Thread [Next in Thread]