changeset 1279:cd0abfdb9e9d

[xemacs-hg @ 2003-02-09 09:33:42 by ben] walk-windows, redisplay fixes console-stream.c: Abort when any attempts to output a stream console are made. Should be caught sooner. event-msw.c: Don't redisplay() during sizing when the frame has not yet been initialized completely. event-stream.c, menubar-msw.c, menubar-x.c, menubar.c, menubar.h: Restore in_menu_callback. Bind it in menubar-{msw,x}.c when calling filter functions and the like. Conditionalize on it, not in_modal_loop, when issuing error in `next-event', otherwise we bite the dust immediately -- event-msw.c purposely calls Fnext_event() in a modal loop, and knows what it's doing. redisplay-output.c: Formatting fixes. redisplay.c, window.c, winslots.h: Delete lots of carcasses of attempts to add redisplay support for font-lock -- `pre/post-redisplay-hook', unimplemented junk from FSF (redisplay-end-trigger, `window-scroll-functions', `window-size-change-functions'). If we want to port some redisplay support from FSF, port the `fontified' property. redisplay.c: Put in a check here (as well as redisplay_device()) for a stream frame. We can get here directly through Lisp fun `redisplay-frame'. Abort if frame not initialized. redisplay.c: Check for stream frames/devices. window.el: walk-windows was broken when a frame was given to WHICH-FRAMES. it would loop forever. The FSF version fixes this but i didn't sync to them because (a) it conses (bad for lazy-lock), (b) it calls select-window.
author ben
date Sun, 09 Feb 2003 09:33:48 +0000
parents 1706fd7322af
children 7b40ca6d2195
files lisp/ChangeLog lisp/window.el src/ChangeLog src/console-stream.c src/event-msw.c src/event-stream.c src/menubar-msw.c src/menubar-x.c src/menubar.c src/menubar.h src/redisplay-output.c src/redisplay.c src/window.c src/winslots.h
diffstat 14 files changed, 184 insertions(+), 194 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Feb 09 07:03:07 2003 +0000
+++ b/lisp/ChangeLog	Sun Feb 09 09:33:48 2003 +0000
@@ -1,3 +1,22 @@
+2003-02-09  Ben Wing  <ben@xemacs.org>
+
+	* window.el (walk-windows):
+	walk-windows was broken when a frame was given to WHICH-FRAMES.
+	it would loop forever.  The FSF version fixes this but i didn't
+	sync to them because (a) it conses (bad for lazy-lock), (b) it
+	calls select-window.
+
+2003-02-09  Ben Wing  <ben@xemacs.org>
+
+	* byte-optimize.el:
+	* byte-optimize.el (byte-compile-inline-expand):
+	* byte-optimize.el (byte-compile-unfold-lambda):
+	* byte-optimize.el (byte-optimize-form-code-walker):
+	* byte-optimize.el (byte-optimize-form):
+	* byte-optimize.el (byte-decompile-bytecode-1):
+	* byte-optimize.el (byte-optimize-lapcode):
+	Review carefully and sync up to 20.7 except for areas as noted.
+
 2003-02-07  Ben Wing  <ben@xemacs.org>
 
 	* hyper-apropos.el:
--- a/lisp/window.el	Sun Feb 09 07:03:07 2003 +0000
+++ b/lisp/window.el	Sun Feb 09 09:33:48 2003 +0000
@@ -96,19 +96,23 @@
 If `window-system', search all devices on window-system consoles.
 Any other non-nil value means search all devices."
   ;; If we start from the minibuffer window, don't fail to come back to it.
-  (if (window-minibuffer-p (selected-window))
-      (setq minibuf t))
-  ;; Note that, like next-window & previous-window, this behaves a little
-  ;; strangely if the selected window is on an invisible frame: it hits
-  ;; some of the windows on that frame, and all windows on visible frames.
-  (let* ((walk-windows-start (selected-window))
-	 (walk-windows-current walk-windows-start))
-    (while (progn
-	     (setq walk-windows-current
-		   (next-window walk-windows-current minibuf which-frames
-				which-devices))
-	     (funcall function walk-windows-current)
-	     (not (eq walk-windows-current walk-windows-start))))))
+  (let ((arg (cond
+	      ((framep which-frames) which-frames)
+	      ((devicep which-devices) which-devices)
+	      (t nil))))
+    (if (window-minibuffer-p (selected-window arg))
+	(setq minibuf t))
+    ;; Note that, like next-window & previous-window, this behaves a little
+    ;; strangely if the selected window is on an invisible frame: it hits
+    ;; some of the windows on that frame, and all windows on visible frames.
+    (let* ((walk-windows-start (selected-window arg))
+	   (walk-windows-current walk-windows-start))
+      (while (progn
+	       (setq walk-windows-current
+		     (next-window walk-windows-current minibuf which-frames
+				  which-devices))
+	       (funcall function walk-windows-current)
+	       (not (eq walk-windows-current walk-windows-start)))))))
 ;; The old XEmacs definition of the above clause.  It's more correct in
 ;; that it will never hit a window that's already been hit even if you
 ;; do something odd like `delete-other-windows', but has the problem
--- a/src/ChangeLog	Sun Feb 09 07:03:07 2003 +0000
+++ b/src/ChangeLog	Sun Feb 09 09:33:48 2003 +0000
@@ -1,3 +1,54 @@
+2003-02-09  Ben Wing  <ben@xemacs.org>
+
+	* console-stream.c:
+	* console-stream.c (stream_clear_region):
+	* console-stream.c (console_type_create_stream):
+	Abort when any attempts to output a stream console are made.
+	Should be caught sooner.
+	
+	* event-msw.c (mswindows_wnd_proc):
+	Don't redisplay() during sizing when the frame has not yet been
+	initialized completely.
+	
+	* event-stream.c (Fnext_event):
+	* menubar-msw.c (mswindows_handle_wm_initmenupopup):
+	* menubar-x.c (protected_menu_item_descriptor_to_widget_value):
+	* menubar.c:
+	* menubar.h:
+	Restore in_menu_callback.  Bind it in menubar-{msw,x}.c when
+	calling filter functions and the like.  Conditionalize on it, not
+	in_modal_loop, when issuing error in `next-event', otherwise we
+	bite the dust immediately -- event-msw.c purposely calls
+	Fnext_event() in a modal loop, and knows what it's doing.
+	
+	* redisplay-output.c (redisplay_unmap_subwindows_maybe):
+	* redisplay-output.c (redisplay_unmap_subwindows_except_us):
+	Formatting fixes.
+	
+	* redisplay.c:
+	* redisplay.c (redisplay_frame):
+	* redisplay.c (Fredisplay_echo_area):
+	* redisplay.c (redisplay_no_pre_idle_hook):
+	* redisplay.c (syms_of_redisplay):
+	* redisplay.c (vars_of_redisplay):
+	* window.c (Fwindow_pixel_edges):
+	* window.c (syms_of_window):
+	* winslots.h:
+	Delete lots of carcasses of attempts to add redisplay support for
+	font-lock -- `pre/post-redisplay-hook', unimplemented junk from
+	FSF (redisplay-end-trigger, `window-scroll-functions',
+	`window-size-change-functions').  If we want to port some
+	redisplay support from FSF, port the `fontified' property.
+
+	* redisplay.c (redisplay_frame):
+	Put in a check here (as well as redisplay_device()) for a stream
+	frame.  We can get here directly through Lisp fun
+	`redisplay-frame'.  Abort if frame not initialized.
+	
+	* redisplay.c (Fredisplay_echo_area):
+	* redisplay.c (Fforce_cursor_redisplay):
+	Check for stream frames/devices.
+
 2003-02-09  Steve Youngs  <youngs@xemacs.org>
 
 	* s/darwin.h (DLSYM_NEEDS_UNDERSCORE): Define it.
--- a/src/console-stream.c	Sun Feb 09 07:03:07 2003 +0000
+++ b/src/console-stream.c	Sun Feb 09 09:33:48 2003 +0000
@@ -1,6 +1,6 @@
 /* Stream device functions.
    Copyright (C) 1995 Free Software Foundation, Inc.
-   Copyright (C) 1996, 2001, 2002 Ben Wing.
+   Copyright (C) 1996, 2001, 2002, 2003 Ben Wing.
 
 This file is part of XEmacs.
 
@@ -216,12 +216,44 @@
   return 1;
 }
 
+/* We used to try and check for redisplaying on stream devices (e.g. in
+   redisplay_device(), and beg out if so.  However, we didn't always manage
+   completely.  Now we do manage completely, and to verify this we abort if
+   we try to display a stream device.  This might fix some crashes I've
+   been getting in pdump -- the only difference between crash and non-crash
+   is a few changes to the redisplay critical-section handling. */
+
+static void
+stream_window_output_begin (struct window *w)
+{
+  abort ();
+}
+
+static void
+stream_window_output_end (struct window *w)
+{
+  abort ();
+}
+
+static void
+stream_frame_output_begin (struct frame *f)
+{
+  abort ();
+}
+
+static void
+stream_frame_output_end (struct frame *f)
+{
+  abort ();
+}
+
 static void
 stream_output_display_block (struct window *w, struct display_line *dl,
 			     int block, int start, int end,
 			     int start_pixpos, int cursor_start,
 			     int cursor_width, int cursor_height)
 {
+  abort ();
 }
 
 static void
@@ -230,6 +262,7 @@
 		     int width, int height, Lisp_Object fcolor,
 		     Lisp_Object bcolor, Lisp_Object background_pixmap)
 {
+  abort ();
 }
 
 static int
@@ -278,12 +311,16 @@
   CONSOLE_HAS_METHOD (stream, init_frame_1);
 
   /* redisplay methods */
+  CONSOLE_HAS_METHOD (stream, text_width);
   CONSOLE_HAS_METHOD (stream, left_margin_width);
   CONSOLE_HAS_METHOD (stream, right_margin_width);
-  CONSOLE_HAS_METHOD (stream, text_width);
-  CONSOLE_HAS_METHOD (stream, output_display_block);
   CONSOLE_HAS_METHOD (stream, divider_height);
   CONSOLE_HAS_METHOD (stream, eol_cursor_width);
+  CONSOLE_HAS_METHOD (stream, window_output_begin);
+  CONSOLE_HAS_METHOD (stream, window_output_end);
+  CONSOLE_HAS_METHOD (stream, frame_output_begin);
+  CONSOLE_HAS_METHOD (stream, frame_output_end);
+  CONSOLE_HAS_METHOD (stream, output_display_block);
   CONSOLE_HAS_METHOD (stream, clear_region);
   CONSOLE_HAS_METHOD (stream, flash);
   CONSOLE_HAS_METHOD (stream, ring_bell);
--- a/src/event-msw.c	Sun Feb 09 07:03:07 2003 +0000
+++ b/src/event-msw.c	Sun Feb 09 09:33:48 2003 +0000
@@ -3366,9 +3366,9 @@
 	    }
 	  else
 	    {
-	      GetClientRect(hwnd, &rect);
-	      FRAME_PIXWIDTH(frame) = rect.right;
-	      FRAME_PIXHEIGHT(frame) = rect.bottom;
+	      GetClientRect (hwnd, &rect);
+	      FRAME_PIXWIDTH (frame) = rect.right;
+	      FRAME_PIXHEIGHT (frame) = rect.bottom;
 
 	      pixel_to_real_char_size (frame, rect.right, rect.bottom,
 				       &FRAME_MSWINDOWS_CHARWIDTH (frame),
@@ -3406,7 +3406,8 @@
                       FRAME_VISIBLE_P (frame) = 1;
                     }
 
-		  if (!msframe->sizing || mswindows_dynamic_frame_resize)
+		  if (frame->init_finished &&
+		      (!msframe->sizing || mswindows_dynamic_frame_resize))
 		    redisplay ();
 		}
 	    }
@@ -3428,11 +3429,11 @@
 	   efficiency, the code below has about one in 4 billion
 	   probability that the HDC is not recreated, provided that
 	   XEmacs is running sufficiently longer than 52 days. */
-	if (DEVICE_MSWINDOWS_UPDATE_TICK(d) != message_tick)
+	if (DEVICE_MSWINDOWS_UPDATE_TICK (d) != message_tick)
 	  {
-	    DEVICE_MSWINDOWS_UPDATE_TICK(d) = message_tick;
-	    DeleteDC (DEVICE_MSWINDOWS_HCDC(d));
-	    DEVICE_MSWINDOWS_HCDC(d) = CreateCompatibleDC (NULL);
+	    DEVICE_MSWINDOWS_UPDATE_TICK (d) = message_tick;
+	    DeleteDC (DEVICE_MSWINDOWS_HCDC (d));
+	    DEVICE_MSWINDOWS_HCDC (d) = CreateCompatibleDC (NULL);
 	  }
       }
       break;
@@ -3507,8 +3508,8 @@
     case WM_HSCROLL:
       {
 	/* Direction of scroll is determined by scrollbar instance. */
-	int code = (int) LOWORD(wParam);
-	int pos = (short int) HIWORD(wParam);
+	int code = (int) LOWORD (wParam);
+	int pos = (short int) HIWORD (wParam);
 	HWND hwndScrollBar = (HWND) lParam;
 	struct gcpro gcpro1, gcpro2;
 
--- a/src/event-stream.c	Sun Feb 09 07:03:07 2003 +0000
+++ b/src/event-stream.c	Sun Feb 09 09:33:48 2003 +0000
@@ -2243,9 +2243,13 @@
      for a timeout event, which will still get retrieved in such a case.
      However, the code to error in such a case has already been present for
      a long time without obvious problems so leaving it in isn't so
-     bad. --ben */
-  if (in_modal_loop)
-    invalid_operation ("Attempt to call next-event inside modal loop",
+     bad.
+
+     #### I used to conditionalize on in_modal_loop but that fails utterly
+     because event-msw.c specifically calls Fnext_event() inside of a modal
+     loop to clear the dispatch queue. --ben */
+  if (in_menu_callback)
+    invalid_operation ("Attempt to call next-event inside menu callback",
 		       Qunbound);
 
   depth = begin_dont_check_for_quit ();
--- a/src/menubar-msw.c	Sun Feb 09 07:03:07 2003 +0000
+++ b/src/menubar-msw.c	Sun Feb 09 09:33:48 2003 +0000
@@ -738,6 +738,8 @@
 mswindows_handle_wm_initmenupopup (HMENU hmenu, struct frame *frm)
 {
   struct handle_wm_initmenu z;
+  int depth = internal_bind_int (&in_menu_callback, 1);
+  Lisp_Object retval;
 
   z.menu = hmenu;
   z.frame = frm;
@@ -748,9 +750,12 @@
 
      #### This is bogus because by the very act of calling
      event_stream_protect_modal_loop(), we disable event retrieval! */
-  return event_stream_protect_modal_loop ("Error during menu handling",
-					  unsafe_handle_wm_initmenupopup, &z,
-					  UNINHIBIT_QUIT);
+  retval = event_stream_protect_modal_loop ("Error during menu handling",
+					    unsafe_handle_wm_initmenupopup, &z,
+					    UNINHIBIT_QUIT);
+  unbind_to (depth);
+
+  return retval;
 }
 
 Lisp_Object
--- a/src/menubar-x.c	Sun Feb 09 07:03:07 2003 +0000
+++ b/src/menubar-x.c	Sun Feb 09 09:33:48 2003 +0000
@@ -389,17 +389,21 @@
 						int filter_p)
 {
   struct menu_item_descriptor_to_widget_value midtwv;
+  int depth = internal_bind_int (&in_menu_callback, 1);
+  Lisp_Object retval;
 
   midtwv.desc = desc;
   midtwv.menu_type = menu_type;
   midtwv.deep_p = deep_p;
   midtwv.filter_p = filter_p;
 
-  if (UNBOUNDP
-      (event_stream_protect_modal_loop
-       ("Error during menu callback",
-	protected_menu_item_descriptor_to_widget_value_1, &midtwv,
-	UNINHIBIT_QUIT)))
+  retval = event_stream_protect_modal_loop
+    ("Error during menu callback",
+     protected_menu_item_descriptor_to_widget_value_1, &midtwv,
+     UNINHIBIT_QUIT);
+  unbind_to (depth);
+
+  if (UNBOUNDP (retval))
     return 0;
 
   return midtwv.wv;
--- a/src/menubar.c	Sun Feb 09 07:03:07 2003 +0000
+++ b/src/menubar.c	Sun Feb 09 09:33:48 2003 +0000
@@ -59,6 +59,7 @@
 Lisp_Object Vblank_menubar;
 
 int popup_menu_titles;
+int in_menu_callback;
 
 Lisp_Object Vmenubar_pointer_glyph;
 
--- a/src/menubar.h	Sun Feb 09 07:03:07 2003 +0000
+++ b/src/menubar.h	Sun Feb 09 09:33:48 2003 +0000
@@ -67,6 +67,7 @@
 extern int popup_menu_up_p;
 extern int menubar_show_keybindings;
 extern int popup_menu_titles;
+extern int in_menu_callback;
 
 #endif /* HAVE_MENUBARS */
 
--- a/src/redisplay-output.c	Sun Feb 09 07:03:07 2003 +0000
+++ b/src/redisplay-output.c	Sun Feb 09 09:33:48 2003 +0000
@@ -1278,7 +1278,9 @@
  Potentially subwindows from the area in the box defined by the given
  parameters.
  ****************************************************************************/
-void redisplay_unmap_subwindows_maybe (struct frame* f, int x, int y, int width, int height)
+void
+redisplay_unmap_subwindows_maybe (struct frame *f, int x, int y, int width,
+				  int height)
 {
   if (!NILP (XWEAK_LIST_LIST (FRAME_SUBWINDOW_CACHE (f))))
     {
@@ -1286,8 +1288,9 @@
     }
 }
 
-static void redisplay_unmap_subwindows_except_us (struct frame* f, int x, int y, int width,
-						  int height, Lisp_Object subwindow)
+static void
+redisplay_unmap_subwindows_except_us (struct frame *f, int x, int y, int width,
+				      int height, Lisp_Object subwindow)
 {
   if (!NILP (XWEAK_LIST_LIST (FRAME_SUBWINDOW_CACHE (f))))
     {
--- a/src/redisplay.c	Sun Feb 09 07:03:07 2003 +0000
+++ b/src/redisplay.c	Sun Feb 09 09:33:48 2003 +0000
@@ -488,22 +488,8 @@
 /* String to display for the arrow.  */
 Lisp_Object Voverlay_arrow_string;
 
-Lisp_Object Vwindow_size_change_functions;
-Lisp_Object Vwindow_scroll_functions;
-Lisp_Object Qredisplay_end_trigger_functions, Vredisplay_end_trigger_functions;
-
 Lisp_Object Qbuffer_list_changed_hook, Vbuffer_list_changed_hook;
 
-
-#define INHIBIT_REDISPLAY_HOOKS  /* #### Until we've thought about
-				    this more. */
-#ifndef INHIBIT_REDISPLAY_HOOKS
-/* #### Chuck says: I think this needs more thought.
-   Think about this for 19.14. */
-Lisp_Object Vpre_redisplay_hook, Vpost_redisplay_hook;
-Lisp_Object Qpre_redisplay_hook, Qpost_redisplay_hook;
-#endif /* INHIBIT_REDISPLAY_HOOKS */
-
 static Fixnum last_display_warning_tick;
 static Fixnum display_warning_tick;
 Lisp_Object Qdisplay_warning_buffer;
@@ -6591,47 +6577,8 @@
     }
 }
 
-static int
-call_redisplay_end_triggers (struct window *w, void *closure)
-{
-  Charbpos lrpos = w->last_redisplay_pos;
-  w->last_redisplay_pos = 0;
-  if (!NILP (w->buffer)
-      && !NILP (w->redisplay_end_trigger)
-      && lrpos > 0)
-    {
-      Charbpos pos;
-
-      if (MARKERP (w->redisplay_end_trigger)
-	  && XMARKER (w->redisplay_end_trigger)->buffer != 0)
-	pos = marker_position (w->redisplay_end_trigger);
-      else if (INTP (w->redisplay_end_trigger))
-	pos = XINT (w->redisplay_end_trigger);
-      else
-	{
-	  w->redisplay_end_trigger = Qnil;
-	  return 0;
-	}
-
-      if (lrpos >= pos)
-	{
-	  Lisp_Object window = wrap_window (w);
-
-	  va_run_hook_with_args_in_buffer_trapping_problems
-	    ("Error in redisplay end trigger",
-	     XBUFFER (w->buffer),
-	     Qredisplay_end_trigger_functions,
-	     2, window,
-	     w->redisplay_end_trigger,
-	     INHIBIT_EXISTING_PERMANENT_DISPLAY_OBJECT_DELETION);
-	  w->redisplay_end_trigger = Qnil;
-	}
-    }
-
-  return 0;
-}
-
-/* Ensure that all windows on the given frame are correctly displayed. */
+/* Ensure that all windows on the given frame are correctly displayed.
+   Return non-zero if pre-empted. */
 
 int
 redisplay_frame (struct frame *f, int preemption_check)
@@ -6639,6 +6586,11 @@
   struct device *d = XDEVICE (f->device);
   int depth;
 
+  assert (f->init_finished);
+
+  if (FRAME_STREAM_P (f)) /* nothing to do */
+    return 0;
+
   if (preemption_check
       && !DEVICE_IMPL_FLAG (d, XDEVIMPF_DONT_PREEMPT_REDISPLAY))
     {
@@ -6800,7 +6752,6 @@
   /* Allow frame size changes to occur again. */
   exit_redisplay_critical_section (depth);
 
-  map_windows (f, call_redisplay_end_triggers, 0);
   return 0;
 }
 
@@ -7003,24 +6954,8 @@
 	 INHIBIT_EXISTING_PERMANENT_DISPLAY_OBJECT_DELETION);
       last_display_warning_tick = display_warning_tick;
     }
-  /* The run_hook_trapping_problems functions are smart enough not
-     to do any evalling if the hook function is empty, so there
-     should not be any significant time loss. */
-#ifndef INHIBIT_REDISPLAY_HOOKS
-  run_hook_trapping_problems
-    ("Error in pre-redisplay-hook",
-     Qpre_redisplay_hook,
-     INHIBIT_EXISTING_PERMANENT_DISPLAY_OBJECT_DELETION);
-#endif /* INHIBIT_REDISPLAY_HOOKS */
 
   redisplay_without_hooks ();
-
-#ifndef INHIBIT_REDISPLAY_HOOKS
-  run_hook_trapping_problems
-    ("Error in post-redisplay-hook",
-     Qpost_redisplay_hook,
-     INHIBIT_EXISTING_PERMANENT_DISPLAY_OBJECT_DELETION);
-#endif /* INHIBIT_REDISPLAY_HOOKS */
 }
 
 Lisp_Object
@@ -9187,6 +9122,9 @@
       struct device *d = XDEVICE (XCAR (devcons));
       Lisp_Object frmcons;
 
+      if (DEVICE_STREAM_P (d))
+	continue;
+
       DEVICE_FRAME_LOOP (frmcons, d)
 	{
 	  struct frame *f = XFRAME (XCAR (frmcons));
@@ -9213,8 +9151,6 @@
 	      redisplay_window (window, 0);
 	      exit_redisplay_critical_section (depth);
 	      MAYBE_DEVMETH (d, frame_output_end, (f));
-
-	      call_redisplay_end_triggers (XWINDOW (window), 0);
 	    }
 	}
     }
@@ -9354,7 +9290,10 @@
 */
   (frame))
 {
-  redisplay_redraw_cursor (decode_frame (frame), 1);
+  struct frame *f = decode_frame (frame);
+
+  if (!FRAME_STREAM_P (f))
+    redisplay_redraw_cursor (f, 1);
   return Qnil;
 }
 
@@ -9699,13 +9638,8 @@
 syms_of_redisplay (void)
 {
   DEFSYMBOL (Qcursor_in_echo_area);
-#ifndef INHIBIT_REDISPLAY_HOOKS
-  DEFSYMBOL (Qpre_redisplay_hook);
-  DEFSYMBOL (Qpost_redisplay_hook);
-#endif /* INHIBIT_REDISPLAY_HOOKS */
   DEFSYMBOL (Qdisplay_warning_buffer);
   DEFSYMBOL (Qbar_cursor);
-  DEFSYMBOL (Qredisplay_end_trigger_functions);
   DEFSYMBOL (Qtop_bottom);
   DEFSYMBOL (Qbuffer_list_changed_hook);
 
@@ -9856,18 +9790,6 @@
 */ );
   Vbar_cursor = Qnil;
 
-#ifndef INHIBIT_REDISPLAY_HOOKS
-  xxDEFVAR_LISP ("pre-redisplay-hook", &Vpre_redisplay_hook /*
-Function or functions to run before every redisplay.
-*/ );
-  Vpre_redisplay_hook = Qnil;
-
-  xxDEFVAR_LISP ("post-redisplay-hook", &Vpost_redisplay_hook /*
-Function or functions to run after every redisplay.
-*/ );
-  Vpost_redisplay_hook = Qnil;
-#endif /* INHIBIT_REDISPLAY_HOOKS */
-
   DEFVAR_LISP ("buffer-list-changed-hook", &Vbuffer_list_changed_hook /*
 Function or functions to call when a frame's buffer list has changed.
 This is called during redisplay, before redisplaying each frame.
@@ -9891,32 +9813,6 @@
      This way, the warnings don't obliterate the splash screen. */
   inhibit_warning_display = 1;
 
-  DEFVAR_LISP ("window-size-change-functions",
-               &Vwindow_size_change_functions /*
-Not currently implemented.
-Functions called before redisplay, if window sizes have changed.
-The value should be a list of functions that take one argument.
-Just before redisplay, for each frame, if any of its windows have changed
-size since the last redisplay, or have been split or deleted,
-all the functions in the list are called, with the frame as argument.
-*/ );
-  Vwindow_size_change_functions = Qnil;
-
-  DEFVAR_LISP ("window-scroll-functions", &Vwindow_scroll_functions /*
-Not currently implemented.
-Functions to call before redisplaying a window with scrolling.
-Each function is called with two arguments, the window
-and its new display-start position.  Note that the value of `window-end'
-is not valid when these functions are called.
-*/ );
-  Vwindow_scroll_functions = Qnil;
-
-  DEFVAR_LISP ("redisplay-end-trigger-functions",
-               &Vredisplay_end_trigger_functions /*
-See `set-window-redisplay-end-trigger'.
-*/ );
-  Vredisplay_end_trigger_functions = Qnil;
-
   DEFVAR_BOOL ("column-number-start-at-one", &column_number_start_at_one /*
 *Non-nil means column display number starts at 1.
 */ );
--- a/src/window.c	Sun Feb 09 07:03:07 2003 +0000
+++ b/src/window.c	Sun Feb 09 09:33:48 2003 +0000
@@ -1739,34 +1739,6 @@
   return ncol;
 }
 
-#if 0 /* bogus FSF crock */
-
-DEFUN ("window-redisplay-end-trigger",
-	 Fwindow_redisplay_end_trigger, 0, 1, 0, /*
-Return WINDOW's redisplay end trigger value.
-See `set-window-redisplay-end-trigger' for more information.
-*/
-	 (window))
-{
-  return decode_window (window)->redisplay_end_trigger;
-}
-
-DEFUN ("set-window-redisplay-end-trigger",
-	 Fset_window_redisplay_end_trigger, 2, 2, 0, /*
-Set WINDOW's redisplay end trigger value to VALUE.
-VALUE should be a buffer position (typically a marker) or nil.
-If it is a buffer position, then if redisplay in WINDOW reaches a position
-beyond VALUE, the functions in `redisplay-end-trigger-functions' are called
-with two arguments: WINDOW, and the end trigger value.
-Afterwards the end-trigger value is reset to nil.
-*/
-	 (window, value))
-{
-  return (decode_window (window)->redisplay_end_trigger = value);
-}
-
-#endif /* 0 */
-
 DEFUN ("window-pixel-edges", Fwindow_pixel_edges, 0, 1, 0, /*
 Return a list of the pixel edge coordinates of WINDOW.
 The returned list is of the form (LEFT TOP RIGHT BOTTOM),
@@ -5404,10 +5376,6 @@
   DEFSUBR (Fset_window_hscroll);
   DEFSUBR (Fmodeline_hscroll);
   DEFSUBR (Fset_modeline_hscroll);
-#if 0 /* bogus FSF crock */
-  DEFSUBR (Fwindow_redisplay_end_trigger);
-  DEFSUBR (Fset_window_redisplay_end_trigger);
-#endif
   DEFSUBR (Fwindow_pixel_edges);
   DEFSUBR (Fwindow_text_area_pixel_edges);
   DEFSUBR (Fwindow_point);
--- a/src/winslots.h	Sun Feb 09 07:03:07 2003 +0000
+++ b/src/winslots.h	Sun Feb 09 09:33:48 2003 +0000
@@ -164,10 +164,6 @@
 
   WINDOW_SLOT (line_cache_last_updated)
 
-  /* If redisplay in this window goes beyond this buffer position,
-     must run the redisplay-end-trigger-functions.  */
-  WINDOW_SLOT (redisplay_end_trigger)
-
   /*** Non-specifier vars of window and window config ***/
 
   /* Non-nil means window is marked as dedicated.  */