]> code.delx.au - gnu-emacs/blobdiff - src/dispextern.h
(verify_interval_modification): Don't run
[gnu-emacs] / src / dispextern.h
index 44a1a04d6c18ef216fdc4a9e159e89bf71a0d272..d3f024e81c9ab9da382861e6ec6e1ef5dadbd44c 100644 (file)
@@ -1,5 +1,5 @@
 /* Interface definitions for display code.
 /* Interface definitions for display code.
-   Copyright (C) 1985, 1993, 1994, 1997, 1998, 1999
+   Copyright (C) 1985, 1993, 1994, 1997, 1998, 1999, 2000, 2001
      Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
      Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
@@ -19,7 +19,7 @@ along with GNU Emacs; see the file COPYING.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.  */
 
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.  */
 
-/* New redisplay written by Gerd Moellmann <gerd@acm.org>.  */
+/* New redisplay written by Gerd Moellmann <gerd@gnu.org>.  */
 
 #ifndef DISPEXTERN_H_INCLUDED
 #define DISPEXTERN_H_INCLUDED
 
 #ifndef DISPEXTERN_H_INCLUDED
 #define DISPEXTERN_H_INCLUDED
@@ -40,7 +40,7 @@ Boston, MA 02111-1307, USA.  */
 #endif
 
 #ifdef macintosh
 #endif
 
 #ifdef macintosh
-#include "macterm.h"
+#include "macgui.h"
 #endif
 
 /* Structure forward declarations.  Some are here because function
 #endif
 
 /* Structure forward declarations.  Some are here because function
@@ -242,7 +242,9 @@ struct glyph
   int charpos;
 
   /* Lisp object source of this glyph.  Currently either a buffer or
   int charpos;
 
   /* Lisp object source of this glyph.  Currently either a buffer or
-     a string, or 0.  */
+     a string, if the glyph was produced from characters which came from 
+     a buffer or a string; or 0 if the glyph was inserted by redisplay
+     for its own purposes such as padding.  */
   Lisp_Object object;
 
   /* Width in pixels.  */
   Lisp_Object object;
 
   /* Width in pixels.  */
@@ -281,8 +283,9 @@ struct glyph
      padding. */
   unsigned padding_p : 1;
 
      padding. */
   unsigned padding_p : 1;
 
-  /* 1 means the actual glyph is not available in the current
-     system.  */
+  /* 1 means the actual glyph is not available, draw a box instead.
+     This can happen when a font couldn't be loaded, or a character
+     doesn't have a glyph in a font.  */
   unsigned glyph_not_available_p : 1;
 
   /* Face of the glyph.  */
   unsigned glyph_not_available_p : 1;
 
   /* Face of the glyph.  */
@@ -339,7 +342,8 @@ struct glyph
       && (X)->padding_p == (Y)->padding_p                      \
       && (X)->left_box_line_p == (Y)->left_box_line_p          \
       && (X)->right_box_line_p == (Y)->right_box_line_p                \
       && (X)->padding_p == (Y)->padding_p                      \
       && (X)->left_box_line_p == (Y)->left_box_line_p          \
       && (X)->right_box_line_p == (Y)->right_box_line_p                \
-      && (X)->voffset == (Y)->voffset)
+      && (X)->voffset == (Y)->voffset                          \
+      && (X)->pixel_width == (Y)->pixel_width)
 
 /* Are character codes, faces, padding_ps of glyphs *X and *Y equal?  */
 
 
 /* Are character codes, faces, padding_ps of glyphs *X and *Y equal?  */
 
@@ -373,9 +377,9 @@ struct glyph
    character is multibyte, return -1 as we can't use glyph table for a
    multibyte character. */
      
    character is multibyte, return -1 as we can't use glyph table for a
    multibyte character. */
      
-#define GLYPH_FROM_CHAR_GLYPH(GLYPH)           \
-  ((GLYPH).u.ch < 256                          \
-   ? ((GLYPH).u.ch | ((GLYPH).face_id << 8))   \
+#define GLYPH_FROM_CHAR_GLYPH(GLYPH)                           \
+  ((GLYPH).u.ch < 256                                          \
+   ? ((GLYPH).u.ch | ((GLYPH).face_id << CHARACTERBITS))       \
    : -1)
 
 /* Is GLYPH a padding glyph?  */
    : -1)
 
 /* Is GLYPH a padding glyph?  */
@@ -472,11 +476,13 @@ struct glyph_matrix
   /* Width and height of the matrix in columns and rows.  */
   int matrix_w, matrix_h;
 
   /* Width and height of the matrix in columns and rows.  */
   int matrix_w, matrix_h;
 
-  /* If this structure describes a window matrix, window_top_y is the
-     top-most y-position and window_height is the height of the
-     window, and window_vscroll is the vscroll at the time the matrix
-     was last adjusted.  Only set for window-based redisplay.  */
-  int window_top_y, window_height, window_width, window_vscroll;
+  /* If this structure describes a window matrix of window W,
+     window_left_x is the value of W->left, window_top_y the value of
+     W->top, window_height and window_width are width and height of W,
+     as returned by window_box, and window_vscroll is the value of
+     W->vscroll at the time the matrix was last adjusted.  Only set
+     for window-based redisplay.  */
+  int window_left_x, window_top_y, window_height, window_width, window_vscroll;
 
   /* Number of glyphs reserved for left and right marginal areas when
      the matrix was last adjusted.  */
 
   /* Number of glyphs reserved for left and right marginal areas when
      the matrix was last adjusted.  */
@@ -496,10 +502,12 @@ struct glyph_matrix
   char method[512];
 #endif
 
   char method[512];
 #endif
 
-  /* The buffer this matrix displays.  Set in redisplay_internal.  */
+  /* The buffer this matrix displays.  Set in
+     mark_window_display_accurate_1.  */
   struct buffer *buffer;
 
   struct buffer *buffer;
 
-  /* Values of BEGV and ZV as of last redisplay.  */
+  /* Values of BEGV and ZV as of last redisplay.  Set in
+     mark_window_display_accurate_1.  */
   int begv, zv;
 };
 
   int begv, zv;
 };
 
@@ -586,7 +594,8 @@ struct glyph_row
   int x, y;
 
   /* Width of the row in pixels without taking face extension at the
   int x, y;
 
   /* Width of the row in pixels without taking face extension at the
-     end of the row into account.  */
+     end of the row into account, and without counting truncation
+     and continuation glyphs at the end of a row on ttys.  */
   int pixel_width;
 
   /* Logical ascent/height of this line.  The value of ascent is zero
   int pixel_width;
 
   /* Logical ascent/height of this line.  The value of ascent is zero
@@ -851,6 +860,10 @@ extern int fonts_changed_p;
 
 extern struct glyph space_glyph;
 
 
 extern struct glyph space_glyph;
 
+/* Frame being updated by update_window/update_frame.  */
+
+extern struct frame *updating_frame;
+
 /* Window being updated by update_window.  This is non-null as long as
    update_window has not finished, and null otherwise.  It's role is
    analogous to updating_frame.  */
 /* Window being updated by update_window.  This is non-null as long as
    update_window has not finished, and null otherwise.  It's role is
    analogous to updating_frame.  */
@@ -912,22 +925,30 @@ extern struct glyph_row scratch_glyph_row;
       : 0)
 
 /* Return the current height of the mode line of window W.  If not
       : 0)
 
 /* Return the current height of the mode line of window W.  If not
-   known from W's current glyph matrix, return a default based on the
-   height of the font of the face `modeline'.  */
-
-#define CURRENT_MODE_LINE_HEIGHT(W)                    \
-     (MATRIX_MODE_LINE_HEIGHT ((W)->current_matrix)    \
-      ? MATRIX_MODE_LINE_HEIGHT ((W)->current_matrix)  \
-      : estimate_mode_line_height (XFRAME ((W)->frame), MODE_LINE_FACE_ID))
+   known from current_mode_line_height, look at W's current glyph
+   matrix, or return a default based on the height of the font of the
+   face `mode-line'.  */
+
+#define CURRENT_MODE_LINE_HEIGHT(W)                            \
+     (current_mode_line_height >= 0                            \
+      ? current_mode_line_height                               \
+      : (MATRIX_MODE_LINE_HEIGHT ((W)->current_matrix)         \
+        ? MATRIX_MODE_LINE_HEIGHT ((W)->current_matrix)        \
+        : estimate_mode_line_height (XFRAME ((W)->frame),      \
+                                     MODE_LINE_FACE_ID)))
 
 /* Return the current height of the top line of window W.  If not
 
 /* Return the current height of the top line of window W.  If not
-   known from W's current glyph matrix, return an estimation based on
-   the height of the font of the face `top-line'.  */
-
-#define CURRENT_HEADER_LINE_HEIGHT(W)                                     \
-      (MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix)                    \
-      ? MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix)                           \
-      : estimate_mode_line_height (XFRAME ((W)->frame), HEADER_LINE_FACE_ID))
+   known from current_header_line_height, look at W's current glyph
+   matrix, or return an estimation based on the height of the font of
+   the face `header-line'.  */
+
+#define CURRENT_HEADER_LINE_HEIGHT(W)                          \
+      (current_header_line_height >= 0                         \
+       ? current_header_line_height                            \
+       : (MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix)      \
+         ? MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix)     \
+         : estimate_mode_line_height (XFRAME ((W)->frame),     \
+                                      HEADER_LINE_FACE_ID)))
 
 /* Return the height of the desired mode line of window W.  */
 
 
 /* Return the height of the desired mode line of window W.  */
 
@@ -1131,6 +1152,8 @@ enum lface_attribute_index
   LFACE_STRIKE_THROUGH_INDEX,
   LFACE_BOX_INDEX,
   LFACE_FONT_INDEX,
   LFACE_STRIKE_THROUGH_INDEX,
   LFACE_BOX_INDEX,
   LFACE_FONT_INDEX,
+  LFACE_INHERIT_INDEX,
+  LFACE_AVGWIDTH_INDEX,
   LFACE_VECTOR_SIZE
 };
 
   LFACE_VECTOR_SIZE
 };
 
@@ -1178,8 +1201,9 @@ struct face
      font may still be used somewhere else.  */
   XFontStruct *font;
 
      font may still be used somewhere else.  */
   XFontStruct *font;
 
-  /* Background stipple or bitmap used for this face.  */
-  Pixmap stipple;
+  /* Background stipple or bitmap used for this face.  This is
+     an id as returned from load_pixmap.  */
+  int stipple;
 
 #else /* not HAVE_WINDOW_SYSTEM */
 
 
 #else /* not HAVE_WINDOW_SYSTEM */
 
@@ -1224,7 +1248,11 @@ struct face
   unsigned int pixmap_w, pixmap_h;
   
   /* Non-zero means characters in this face have a box that thickness
   unsigned int pixmap_w, pixmap_h;
   
   /* Non-zero means characters in this face have a box that thickness
-     around them.  */
+     around them.  If it is negative, the absolute value indicates the
+     thickness, and the horizontal lines of box (top and bottom) are
+     drawn inside of characters glyph area.  The vartical lines of box
+     (left and right) are drawn as the same way as the case that this
+     value is positive.  */
   int box_line_width;
 
   /* Type of box drawn.  A value of FACE_NO_BOX means no box is drawn
   int box_line_width;
 
   /* Type of box drawn.  A value of FACE_NO_BOX means no box is drawn
@@ -1347,6 +1375,10 @@ struct face_cache
 
   /* The allocated size, and number of used slots of faces_by_id.  */
   int size, used;
 
   /* The allocated size, and number of used slots of faces_by_id.  */
   int size, used;
+
+  /* Flag indicating that attributes of the `menu' face have been
+     changed.  */
+  unsigned menu_face_changed_p : 1;
 };
 
 
 };
 
 
@@ -1563,9 +1595,9 @@ struct it
   /* Vector of glyphs for control character translation.  The pointer
      dpvec is set to ctl_chars when a control character is translated.
      This vector is also used for incomplete multibyte character
   /* Vector of glyphs for control character translation.  The pointer
      dpvec is set to ctl_chars when a control character is translated.
      This vector is also used for incomplete multibyte character
-     translation (e.g \222\244).  Such a character is at most 3 bytes,
-     thus we need at most 12 bytes here.  */
-  Lisp_Object ctl_chars[12];
+     translation (e.g \222\244).  Such a character is at most 4 bytes,
+     thus we need at most 16 bytes here.  */
+  Lisp_Object ctl_chars[16];
 
   /* Current buffer or string position of the iterator, including
      position in overlay strings etc.  */
 
   /* Current buffer or string position of the iterator, including
      position in overlay strings etc.  */
@@ -1580,10 +1612,6 @@ struct it
      OVERLAY_STRING_CHUNK_SIZE.  */
   int n_overlay_strings;
 
      OVERLAY_STRING_CHUNK_SIZE.  */
   int n_overlay_strings;
 
-  /* If non-zero, an additional overlay start position to take overlay
-     strings from.  */
-  int add_overlay_start;
-
   /* If non-nil, a Lisp string being processed.  If
      current.overlay_string_index >= 0, this is an overlay string from
      pos.  */
   /* If non-nil, a Lisp string being processed.  If
      current.overlay_string_index >= 0, this is an overlay string from
      pos.  */
@@ -1604,6 +1632,7 @@ struct it
     enum glyph_row_area area;
     unsigned multibyte_p : 1;
     unsigned string_from_display_prop_p : 1;
     enum glyph_row_area area;
     unsigned multibyte_p : 1;
     unsigned string_from_display_prop_p : 1;
+    unsigned display_ellipsis_p : 1;
     Lisp_Object space_width;
     short voffset;
     Lisp_Object font_height;
     Lisp_Object space_width;
     short voffset;
     Lisp_Object font_height;
@@ -1654,9 +1683,12 @@ struct it
      character have been put on the previous line.  */
   unsigned starts_in_middle_of_char_p : 1;
 
      character have been put on the previous line.  */
   unsigned starts_in_middle_of_char_p : 1;
 
+  /* If 1, saved_face_id contains the id of the face in front of text
+     skipped due to selective display.  */
+  unsigned face_before_selective_p : 1;
+
   /* The ID of the default face to use.  One of DEFAULT_FACE_ID,
   /* The ID of the default face to use.  One of DEFAULT_FACE_ID,
-     MODE_LINE_FACE_ID, or TOOL_BAR_FACE_ID, depending on what we
-     are displaying.  */
+     MODE_LINE_FACE_ID, etc, depending on what we are displaying.  */
   int base_face_id;
 
   /* If what == IT_CHARACTER, character and length in bytes.  This is
   int base_face_id;
 
   /* If what == IT_CHARACTER, character and length in bytes.  This is
@@ -1975,8 +2007,8 @@ struct image
   /* Relief to draw around the image.  */
   int relief;
 
   /* Relief to draw around the image.  */
   int relief;
 
-  /* Optional margin around the image.  This includes the relief.  */
-  int margin;
+  /* Optional margins around the image.  This includes the relief.  */
+  int hmargin, vmargin;
 
   /* Reference to the type of the image.  */
   struct image_type *type;
 
   /* Reference to the type of the image.  */
   struct image_type *type;
@@ -2103,12 +2135,20 @@ extern int auto_raise_tool_bar_buttons_p;
 
 /* Margin around tool-bar buttons in pixels.  */
 
 
 /* Margin around tool-bar buttons in pixels.  */
 
-extern int tool_bar_button_margin;
+extern Lisp_Object Vtool_bar_button_margin;
 
 /* Thickness of relief to draw around tool-bar buttons.  */
 
 extern int tool_bar_button_relief;
 
 
 /* Thickness of relief to draw around tool-bar buttons.  */
 
 extern int tool_bar_button_relief;
 
+/* Default values of the above variables.  */
+
+#define DEFAULT_TOOL_BAR_BUTTON_MARGIN 1
+#define DEFAULT_TOOL_BAR_BUTTON_RELIEF 3
+
+/* The height in pixels of the default tool-bar images.  */
+
+#define DEFAULT_TOOL_BAR_IMAGE_HEIGHT 24
 
 \f
 /***********************************************************************
 
 \f
 /***********************************************************************
@@ -2117,8 +2157,10 @@ extern int tool_bar_button_relief;
 
 /* Defined in xdisp.c */
 
 
 /* Defined in xdisp.c */
 
+int string_buffer_position P_ ((struct window *, Lisp_Object, int));
+int line_bottom_y P_ ((struct it *));
 int display_prop_intangible_p P_ ((Lisp_Object));
 int display_prop_intangible_p P_ ((Lisp_Object));
-void resize_echo_area_axactly P_ ((void));
+void resize_echo_area_exactly P_ ((void));
 int resize_mini_window P_ ((struct window *, int));
 int try_window P_ ((Lisp_Object, struct text_pos));
 void window_box P_ ((struct window *, int, int *, int *, int *, int *));
 int resize_mini_window P_ ((struct window *, int));
 int try_window P_ ((Lisp_Object, struct text_pos));
 void window_box P_ ((struct window *, int, int *, int *, int *, int *));
@@ -2129,7 +2171,7 @@ int window_box_left P_ ((struct window *, int));
 int window_box_right P_ ((struct window *, int));
 void window_box_edges P_ ((struct window *, int, int *, int *, int *, int *));
 void mark_window_display_accurate P_ ((Lisp_Object, int));
 int window_box_right P_ ((struct window *, int));
 void window_box_edges P_ ((struct window *, int, int *, int *, int *, int *));
 void mark_window_display_accurate P_ ((Lisp_Object, int));
-void redisplay_preserve_echo_area P_ ((void));
+void redisplay_preserve_echo_area P_ ((int));
 void set_cursor_from_row P_ ((struct window *, struct glyph_row *,
                              struct glyph_matrix *, int, int, int, int));
 void init_iterator P_ ((struct it *, struct window *, int,
 void set_cursor_from_row P_ ((struct window *, struct glyph_row *,
                              struct glyph_matrix *, int, int, int, int));
 void init_iterator P_ ((struct it *, struct window *, int,
@@ -2137,13 +2179,15 @@ void init_iterator P_ ((struct it *, struct window *, int,
 void init_iterator_to_row_start P_ ((struct it *, struct window *,
                                     struct glyph_row *));
 int get_next_display_element P_ ((struct it *));
 void init_iterator_to_row_start P_ ((struct it *, struct window *,
                                     struct glyph_row *));
 int get_next_display_element P_ ((struct it *));
-void set_iterator_to_next P_ ((struct it *));
+void set_iterator_to_next P_ ((struct it *, int));
 void produce_glyphs P_ ((struct it *));
 void produce_special_glyphs P_ ((struct it *, enum display_element_type));
 void start_display P_ ((struct it *, struct window *, struct text_pos));
 void move_it_to P_ ((struct it *, int, int, int, int, int));
 void move_it_vertically P_ ((struct it *, int));
 void produce_glyphs P_ ((struct it *));
 void produce_special_glyphs P_ ((struct it *, enum display_element_type));
 void start_display P_ ((struct it *, struct window *, struct text_pos));
 void move_it_to P_ ((struct it *, int, int, int, int, int));
 void move_it_vertically P_ ((struct it *, int));
+void move_it_vertically_backward P_ ((struct it *, int));
 void move_it_by_lines P_ ((struct it *, int, int));
 void move_it_by_lines P_ ((struct it *, int, int));
+void move_it_past_eol P_ ((struct it *));
 int frame_mode_line_height P_ ((struct frame *));
 void highlight_trailing_whitespace P_ ((struct frame *, struct glyph_row *));
 int tool_bar_item_info P_ ((struct frame *, struct glyph *, int *));
 int frame_mode_line_height P_ ((struct frame *));
 void highlight_trailing_whitespace P_ ((struct frame *, struct glyph_row *));
 int tool_bar_item_info P_ ((struct frame *, struct glyph *, int *));
@@ -2152,6 +2196,9 @@ extern Lisp_Object Vshow_trailing_whitespace;
 extern int redisplaying_p;
 extern Lisp_Object Vimage_types;
 extern void add_to_log P_ ((char *, Lisp_Object, Lisp_Object));
 extern int redisplaying_p;
 extern Lisp_Object Vimage_types;
 extern void add_to_log P_ ((char *, Lisp_Object, Lisp_Object));
+extern int help_echo_showing_p;
+extern int current_mode_line_height, current_header_line_height;
+extern int cursor_in_non_selected_windows;
 
 /* Defined in sysdep.c */
 
 
 /* Defined in sysdep.c */
 
@@ -2164,9 +2211,6 @@ void init_sigio P_ ((int));
 
 /* Defined in xfaces.c */
 
 
 /* Defined in xfaces.c */
 
-#ifdef USE_X_TOOLKIT
-void x_set_menu_resources_from_menu_face P_ ((struct frame *, Widget));
-#endif
 #ifdef HAVE_X_WINDOWS
 void x_free_colors P_ ((struct frame *, unsigned long *, int));
 #endif
 #ifdef HAVE_X_WINDOWS
 void x_free_colors P_ ((struct frame *, unsigned long *, int));
 #endif
@@ -2192,11 +2236,12 @@ void free_frame_faces P_ ((struct frame *));
 void recompute_basic_faces P_ ((struct frame *));
 int face_at_buffer_position P_ ((struct window *, int, int, int, int *,
                                 int, int));
 void recompute_basic_faces P_ ((struct frame *));
 int face_at_buffer_position P_ ((struct window *, int, int, int, int *,
                                 int, int));
-int face_at_string_position P_ ((struct window *, Lisp_Object,
-                                int, int, int, int, int *, enum face_id));
+int face_at_string_position P_ ((struct window *, Lisp_Object, int, int, int,
+                                int, int *, enum face_id, int));
 int compute_char_face P_ ((struct frame *, int, Lisp_Object));
 void free_all_realized_faces P_ ((Lisp_Object));
 extern Lisp_Object Qforeground_color, Qbackground_color;
 int compute_char_face P_ ((struct frame *, int, Lisp_Object));
 void free_all_realized_faces P_ ((Lisp_Object));
 extern Lisp_Object Qforeground_color, Qbackground_color;
+extern char unspecified_fg[], unspecified_bg[];
 void free_realized_multibyte_face P_ ((struct frame *, int));
 
 /* Defined in xfns.c  */
 void free_realized_multibyte_face P_ ((struct frame *, int));
 
 /* Defined in xfns.c  */
@@ -2221,13 +2266,13 @@ void forall_images_in_image_cache P_ ((struct frame *,
 int valid_image_p P_ ((Lisp_Object));
 void prepare_image_for_display P_ ((struct frame *, struct image *));
 int lookup_image P_ ((struct frame *, Lisp_Object));
 int valid_image_p P_ ((Lisp_Object));
 void prepare_image_for_display P_ ((struct frame *, struct image *));
 int lookup_image P_ ((struct frame *, Lisp_Object));
-extern struct frame *tip_frame;
+extern Lisp_Object tip_frame;
 extern Window tip_window;
 EXFUN (Fx_show_tip, 6);
 EXFUN (Fx_hide_tip, 0);
 extern Window tip_window;
 EXFUN (Fx_show_tip, 6);
 EXFUN (Fx_hide_tip, 0);
-extern void start_busy_cursor P_ ((void));
-extern void cancel_busy_cursor P_ ((void));
-extern int display_busy_cursor_p;
+extern void start_hourglass P_ ((void));
+extern void cancel_hourglass P_ ((void));
+extern int display_hourglass_p;
 
 #endif /* HAVE_WINDOW_SYSTEM */
 
 
 #endif /* HAVE_WINDOW_SYSTEM */
 
@@ -2238,6 +2283,7 @@ int popup_activated P_ ((void));
 
 /* Defined in dispnew.c  */
 
 
 /* Defined in dispnew.c  */
 
+extern int inverse_video;
 int estimate_mode_line_height P_ ((struct frame *, enum face_id));
 Lisp_Object mode_line_string P_ ((struct window *, int, int, int, int *));
 extern void redraw_frame P_ ((struct frame *));
 int estimate_mode_line_height P_ ((struct frame *, enum face_id));
 Lisp_Object mode_line_string P_ ((struct window *, int, int, int, int *));
 extern void redraw_frame P_ ((struct frame *));
@@ -2280,13 +2326,15 @@ int direct_output_forward_char P_ ((int));
 int update_frame P_ ((struct frame *, int, int));
 void update_single_window P_ ((struct window *, int));
 int scrolling P_ ((struct frame *));
 int update_frame P_ ((struct frame *, int, int));
 void update_single_window P_ ((struct window *, int));
 int scrolling P_ ((struct frame *));
-int buffer_posn_from_coords P_ ((struct window *, int *, int *));
+void buffer_posn_from_coords P_ ((struct window *, int *, int *,
+                                 Lisp_Object *, struct display_pos *));
 void do_pending_window_change P_ ((int));
 void change_frame_size P_ ((struct frame *, int, int, int, int, int));
 void bitch_at_user P_ ((void));
 Lisp_Object sit_for P_ ((int, int, int, int, int));
 void init_display P_ ((void));
 void syms_of_display P_ ((void));
 void do_pending_window_change P_ ((int));
 void change_frame_size P_ ((struct frame *, int, int, int, int, int));
 void bitch_at_user P_ ((void));
 Lisp_Object sit_for P_ ((int, int, int, int, int));
 void init_display P_ ((void));
 void syms_of_display P_ ((void));
+extern Lisp_Object Qredisplay_dont_pause;
 
 /* Defined in term.c */
 
 
 /* Defined in term.c */