emacs-diffs
[Top][All Lists]
Advanced

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

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


From: Kim F. Storm
Subject: [Emacs-diffs] Changes to emacs/src/window.c
Date: Sun, 23 Nov 2003 16:47:25 -0500

Index: emacs/src/window.c
diff -c emacs/src/window.c:1.455 emacs/src/window.c:1.456
*** emacs/src/window.c:1.455    Sat Nov 22 19:10:08 2003
--- emacs/src/window.c  Sun Nov 23 16:47:24 2003
***************
*** 1829,1834 ****
--- 1829,1835 ----
    DELETE_BUFFER_WINDOWS,      /* Arg is buffer */
    GET_LARGEST_WINDOW,
    UNSHOW_BUFFER,              /* Arg is buffer */
+   REDISPLAY_BUFFER_WINDOWS,   /* Arg is buffer */
    CHECK_ALL_WINDOWS
  };
  
***************
*** 2027,2032 ****
--- 2028,2041 ----
              }
            break;
  
+         case REDISPLAY_BUFFER_WINDOWS:
+           if (EQ (w->buffer, obj))
+             {
+               mark_window_display_accurate (window, 0);
+               best_window = window;
+             }
+           break;
+ 
            /* Check for a window that has a killed buffer.  */
          case CHECK_ALL_WINDOWS:
            if (! NILP (w->buffer)
***************
*** 3428,3433 ****
--- 3437,3482 ----
    return display_buffer_1 (window);
  }
  
+ 
+ DEFUN ("force-window-update", Fforce_window_update, Sforce_window_update,
+        0, 1, 0,
+        doc: /* Force redisplay of all windows.
+ If optional arg OBJECT is a window, force redisplay of that window only.
+ If OBJECT is a buffer or buffer name, force redisplay of all windows 
+ displaying that buffer.  */)
+      (object)
+      Lisp_Object object;
+ {
+   if (NILP (object))
+     {
+       windows_or_buffers_changed++;
+       return Qt;
+     }
+ 
+   if (WINDOWP (object))
+     {
+       mark_window_display_accurate (object, 0);
+       return Qt;
+     }
+     
+   if (STRINGP (object))
+     object = Fget_buffer (object);
+   if (BUFFERP (object) && !NILP (XBUFFER (object)->name))
+     {
+       /* Walk all windows looking for buffer, and force update
+        of each of those windows.  */
+ 
+       object = window_loop (REDISPLAY_BUFFER_WINDOWS, object, 0, Qvisible);
+       return NILP (object) ? Qnil : Qt;
+     }
+ 
+   /* If nothing suitable was found, just return.
+      We could signal an error, but this feature will typically be used
+      asynchronously in timers or process sentinels, so we don't.  */
+   return Qnil;
+ }
+ 
+ 
  void
  temp_output_buffer_show (buf)
       register Lisp_Object buf;
***************
*** 5844,5854 ****
  DEFUN ("set-window-margins", Fset_window_margins, Sset_window_margins,
         2, 3, 0,
         doc: /* Set width of marginal areas of window WINDOW.
! If window is nil, set margins of the currently selected window.
! First parameter LEFT-WIDTH specifies the number of character
! cells to reserve for the left marginal area.  Second parameter
! RIGHT-WIDTH does the same for the right marginal area.
! A nil width parameter means no margin.  */)
       (window, left, right)
       Lisp_Object window, left, right;
  {
--- 5893,5903 ----
  DEFUN ("set-window-margins", Fset_window_margins, Sset_window_margins,
         2, 3, 0,
         doc: /* Set width of marginal areas of window WINDOW.
! If WINDOW is nil, set margins of the currently selected window.
! Second arg LEFT-WIDTH specifies the number of character cells to
! reserve for the left marginal area.  Optional third arg RIGHT-WIDTH
! does the same for the right marginal area.  A nil width parameter
! means no margin.  */)
       (window, left, right)
       Lisp_Object window, left, right;
  {
***************
*** 5910,5926 ****
  DEFUN ("set-window-fringes", Fset_window_fringes, Sset_window_fringes,
         2, 4, 0,
         doc: /* Set the fringe widths of window WINDOW.
- 
  If WINDOW is nil, set the fringe widths of the currently selected
  window.
! 
! The second parameter LEFT-WIDTH specifies the number of pixels to
! reserve for the left fringe.  The third parameter RIGHT-WIDTH
! specifies the right fringe width.  If a fringe width parameter is nil,
! that means to use the frame's default fringe width.  Default fringe
! widths can be set with the command `set-fringe-style'.
! 
! If the fourth parameter OUTSIDE-MARGINS is non-nil, draw the fringes
  outside of the display margins.  By default, fringes are drawn between
  display marginal areas and the text area.  */)
       (window, left, right, outside_margins)
--- 5959,5972 ----
  DEFUN ("set-window-fringes", Fset_window_fringes, Sset_window_fringes,
         2, 4, 0,
         doc: /* Set the fringe widths of window WINDOW.
  If WINDOW is nil, set the fringe widths of the currently selected
  window.
! Second arg LEFT-WIDTH specifies the number of pixels to reserve for
! the left fringe.  Optional third arg RIGHT-WIDTH specifies the right
! fringe width.  If a fringe width arg is nil, that means to use the
! frame's default fringe width.  Default fringe widths can be set with
! the command `set-fringe-style'.
! If optional fourth arg OUTSIDE-MARGINS is non-nil, draw the fringes
  outside of the display margins.  By default, fringes are drawn between
  display marginal areas and the text area.  */)
       (window, left, right, outside_margins)
***************
*** 6605,6610 ****
--- 6651,6657 ----
    defsubr (&Sspecial_display_p);
    defsubr (&Ssame_window_p);
    defsubr (&Sdisplay_buffer);
+   defsubr (&Sforce_window_update);
    defsubr (&Ssplit_window);
    defsubr (&Senlarge_window);
    defsubr (&Sshrink_window);




reply via email to

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