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: Sun, 16 Dec 2001 15:02:02 -0500

Index: emacs/src/xdisp.c
diff -c emacs/src/xdisp.c:1.714 emacs/src/xdisp.c:1.715
*** emacs/src/xdisp.c:1.714     Wed Dec 12 17:27:28 2001
--- emacs/src/xdisp.c   Sun Dec 16 15:02:01 2001
***************
*** 52,58 ****
          +---------------------------------+
            |                                 |
          |                                 V
!    +--------------+   redisplay()   +----------------+
     | Lisp machine |---------------->| Redisplay code |<--+
     +--------------+   (xdisp.c)     +----------------+   |
          ^                                  |           |
--- 52,58 ----
          +---------------------------------+
            |                                 |
          |                                 V
!    +--------------+   redisplay     +----------------+
     | Lisp machine |---------------->| Redisplay code |<--+
     +--------------+   (xdisp.c)     +----------------+   |
          ^                                  |           |
***************
*** 593,598 ****
--- 593,602 ----
  
  Lisp_Object Vresize_mini_windows;
  
+ /* Buffer being redisplayed -- for redisplay_window_error.  */
+ 
+ struct buffer *displayed_buffer;
+ 
  /* Value returned from text property handlers (see below).  */
  
  enum prop_handled
***************
*** 733,738 ****
--- 737,745 ----
  static int echo_area_display P_ ((int));
  static void redisplay_windows P_ ((Lisp_Object));
  static void redisplay_window P_ ((Lisp_Object, int));
+ static Lisp_Object redisplay_window_error ();
+ static Lisp_Object redisplay_window_0 P_ ((Lisp_Object));
+ static Lisp_Object redisplay_window_1 P_ ((Lisp_Object));
  static void update_menu_bar P_ ((struct frame *, int));
  static int try_window_reusing_current_matrix P_ ((struct window *));
  static int try_window_id P_ ((struct window *));
***************
*** 8883,8889 ****
        Lisp_Object mini_window;
        struct frame *mini_frame;
  
!       redisplay_window (selected_window, 1);
    
        /* Compare desired and current matrices, perform output.  */
      update:
--- 8890,8898 ----
        Lisp_Object mini_window;
        struct frame *mini_frame;
  
!       displayed_buffer = XBUFFER (XWINDOW (selected_window)->buffer);
!       internal_condition_case_1 (redisplay_window_1, selected_window, Qerror,
!                                redisplay_window_error);
    
        /* Compare desired and current matrices, perform output.  */
      update:
***************
*** 9219,9231 ****
        else if (!NILP (w->vchild))
        redisplay_windows (w->vchild);
        else
!       redisplay_window (window, 0);
  
        window = w->next;
      }
  }
  
  
  /* Set cursor position of W.  PT is assumed to be displayed in ROW.
     DELTA is the number of bytes by which positions recorded in ROW
     differ from current buffer positions.  */
--- 9228,9268 ----
        else if (!NILP (w->vchild))
        redisplay_windows (w->vchild);
        else
!       {
!         displayed_buffer = XBUFFER (w->buffer);
!         internal_condition_case_1 (redisplay_window_0, window, Qerror,
!                                    redisplay_window_error);
!       }
  
        window = w->next;
      }
  }
  
+ static Lisp_Object
+ redisplay_window_error ()
+ {
+   displayed_buffer->display_error_modiff = BUF_MODIFF (displayed_buffer);
+   return Qnil;
+ }
+ 
+ static Lisp_Object
+ redisplay_window_0 (window)
+      Lisp_Object window;
+ {
+   if (displayed_buffer->display_error_modiff < BUF_MODIFF (displayed_buffer))
+     redisplay_window (window, 0);
+   return Qnil;
+ }
  
+ static Lisp_Object
+ redisplay_window_1 (window)
+      Lisp_Object window;
+ {
+   if (displayed_buffer->display_error_modiff < BUF_MODIFF (displayed_buffer))
+     redisplay_window (window, 1);
+   return Qnil;
+ }
+ 
  /* Set cursor position of W.  PT is assumed to be displayed in ROW.
     DELTA is the number of bytes by which positions recorded in ROW
     differ from current buffer positions.  */



reply via email to

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