X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/d78f30b86d46ec52982a98cf7fb1811b3568961d..ff6daed30415db8a1110e11f67f5d61ef02f04a5:/src/dispextern.h diff --git a/src/dispextern.h b/src/dispextern.h index a11e4daaa2..d6537bcd67 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -1,6 +1,6 @@ /* Interface definitions for display code. - Copyright (C) 1985,93,94,97,98,99, 2000,01,02,03, 2004, 2005 - Free Software Foundation, Inc. + Copyright (C) 1985, 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002, + 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -16,8 +16,8 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License 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., 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ /* New redisplay written by Gerd Moellmann . */ @@ -119,6 +119,13 @@ enum window_part #define GLYPH_DEBUG 0 #endif +/* If XASSERTS is non-zero, additional consistency checks are activated. + Turn it off by defining the macro XASSERTS to zero. */ + +#ifndef XASSERTS +#define XASSERTS 0 +#endif + /* Macros to include code only if GLYPH_DEBUG != 0. */ #if GLYPH_DEBUG @@ -127,8 +134,11 @@ enum window_part #define IF_DEBUG(X) (void) 0 #endif -/* Maybe move this inside the above `#ifdef GLYPH_DEBUG' for release. */ +#if XASSERTS #define xassert(X) do {if (!(X)) abort ();} while (0) +#else +#define xassert(X) (void) 0 +#endif /* Macro for displaying traces of redisplay. If Emacs was compiled with GLYPH_DEBUG != 0, the variable trace_redisplay_p can be set to @@ -356,7 +366,8 @@ struct glyph #define FACE_ID_BITS 21 - /* Face of the glyph. */ + /* Face of the glyph. This is a realized face ID, + an index in the face cache of the frame. */ unsigned face_id : FACE_ID_BITS; /* Type of font used to display the character glyph. May be used to @@ -716,6 +727,11 @@ struct glyph_row position of the next row. */ struct display_pos end; + /* Non-zero means the overlay arrow bitmap is on this line. + -1 means use default overlay arrow bitmap, else + it specifies actual fringe bitmap number. */ + int overlay_arrow_bitmap; + /* Left fringe bitmap number (enum fringe_bitmap_type). */ unsigned left_user_fringe_bitmap : FRINGE_ID_BITS; @@ -754,9 +770,6 @@ struct glyph_row unsigned truncated_on_left_p : 1; unsigned truncated_on_right_p : 1; - /* 1 means the overlay arrow is on this line. */ - unsigned overlay_arrow_p : 1; - /* 1 means that this row displays a continued line, i.e. it has a continuation mark at the right side. */ unsigned continued_p : 1; @@ -1580,6 +1593,7 @@ enum face_id CURSOR_FACE_ID, MOUSE_FACE_ID, MENU_FACE_ID, + VERTICAL_BORDER_FACE_ID, BASIC_FACE_ID_SENTINEL }; @@ -1786,6 +1800,16 @@ struct it_slice Lisp_Object height; }; +enum it_method { + GET_FROM_BUFFER = 0, + GET_FROM_DISPLAY_VECTOR, + GET_FROM_COMPOSITION, + GET_FROM_STRING, + GET_FROM_C_STRING, + GET_FROM_IMAGE, + GET_FROM_STRETCH, + NUM_IT_METHODS +}; struct it { @@ -1796,9 +1820,8 @@ struct it /* The window's frame. */ struct frame *f; - /* Function to call to load this structure with the next display - element. */ - int (* method) P_ ((struct it *it)); + /* Method to use to load this structure with the next display element. */ + enum it_method method; /* The next position at which to check for face changes, invisible text, overlay strings, end of text etc., which see. */ @@ -1878,7 +1901,7 @@ struct it /* Vector of overlays to process. Overlay strings are processed OVERLAY_STRING_CHUNK_SIZE at a time. */ -#define OVERLAY_STRING_CHUNK_SIZE 3 +#define OVERLAY_STRING_CHUNK_SIZE 16 Lisp_Object overlay_strings[OVERLAY_STRING_CHUNK_SIZE]; /* Total number of overlay strings to process. This can be > @@ -2570,7 +2593,7 @@ int line_bottom_y P_ ((struct it *)); int display_prop_intangible_p P_ ((Lisp_Object)); void resize_echo_area_exactly P_ ((void)); int resize_mini_window P_ ((struct window *, int)); -int try_window P_ ((Lisp_Object, struct text_pos)); +int try_window P_ ((Lisp_Object, struct text_pos, int)); void window_box P_ ((struct window *, int, int *, int *, int *, int *)); int window_box_height P_ ((struct window *)); int window_text_bottom_y P_ ((struct window *)); @@ -2760,7 +2783,7 @@ int lookup_face P_ ((struct frame *, Lisp_Object *, int, struct face *)); int lookup_named_face P_ ((struct frame *, Lisp_Object, int, int)); int smaller_face P_ ((struct frame *, int, int)); int face_with_height P_ ((struct frame *, int, int)); -int lookup_derived_face P_ ((struct frame *, Lisp_Object, int, int)); +int lookup_derived_face P_ ((struct frame *, Lisp_Object, int, int, int)); void init_frame_faces P_ ((struct frame *)); void free_frame_faces P_ ((struct frame *)); void recompute_basic_faces P_ ((struct frame *)); @@ -2772,6 +2795,7 @@ int merge_faces P_ ((struct frame *, Lisp_Object, int, 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; +extern Lisp_Object Qframe_set_background_mode; extern char unspecified_fg[], unspecified_bg[]; void free_realized_multibyte_face P_ ((struct frame *, int)); @@ -2798,6 +2822,7 @@ EXFUN (Fx_show_tip, 6); EXFUN (Fx_hide_tip, 0); extern void start_hourglass P_ ((void)); extern void cancel_hourglass P_ ((void)); +extern int hourglass_started P_ ((void)); extern int display_hourglass_p; /* Returns the background color of IMG, calculating one heuristically if @@ -2890,6 +2915,7 @@ 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; +GLYPH spec_glyph_lookup_face P_ ((struct window *, GLYPH)); /* Defined in term.c */