comparison src/dispextern.h @ 85973:d3e87ee5aa0e

Merge from emacs--rel--22 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-923
author Miles Bader <miles@gnu.org>
date Fri, 09 Nov 2007 09:45:30 +0000
parents 5059c82a6ddf aef264594958
children 153b9f19471f 880960b70474
comparison
equal deleted inserted replaced
85972:51aa47312c4b 85973:d3e87ee5aa0e
1801 Lisp_Object y; 1801 Lisp_Object y;
1802 Lisp_Object width; 1802 Lisp_Object width;
1803 Lisp_Object height; 1803 Lisp_Object height;
1804 }; 1804 };
1805 1805
1806 /* Input sources for fetching characters or data to display.
1807 The input source is found in the `method' field. */
1808
1806 enum it_method { 1809 enum it_method {
1807 GET_FROM_BUFFER = 0, 1810 GET_FROM_BUFFER = 0,
1808 GET_FROM_DISPLAY_VECTOR, 1811 GET_FROM_DISPLAY_VECTOR,
1809 GET_FROM_COMPOSITION, 1812 GET_FROM_COMPOSITION,
1810 GET_FROM_STRING, 1813 GET_FROM_STRING,
1902 1905
1903 /* Current buffer or string position of the iterator, including 1906 /* Current buffer or string position of the iterator, including
1904 position in overlay strings etc. */ 1907 position in overlay strings etc. */
1905 struct display_pos current; 1908 struct display_pos current;
1906 1909
1910 /* Total number of overlay strings to process. This can be >
1911 OVERLAY_STRING_CHUNK_SIZE. */
1912 int n_overlay_strings;
1913
1907 /* Vector of overlays to process. Overlay strings are processed 1914 /* Vector of overlays to process. Overlay strings are processed
1908 OVERLAY_STRING_CHUNK_SIZE at a time. */ 1915 OVERLAY_STRING_CHUNK_SIZE at a time. */
1909 #define OVERLAY_STRING_CHUNK_SIZE 16 1916 #define OVERLAY_STRING_CHUNK_SIZE 16
1910 Lisp_Object overlay_strings[OVERLAY_STRING_CHUNK_SIZE]; 1917 Lisp_Object overlay_strings[OVERLAY_STRING_CHUNK_SIZE];
1911 1918
1912 /* Total number of overlay strings to process. This can be > 1919 /* For each overlay string, the overlay it came from. */
1913 OVERLAY_STRING_CHUNK_SIZE. */ 1920 Lisp_Object string_overlays[OVERLAY_STRING_CHUNK_SIZE];
1914 int n_overlay_strings;
1915 1921
1916 /* If non-nil, a Lisp string being processed. If 1922 /* If non-nil, a Lisp string being processed. If
1917 current.overlay_string_index >= 0, this is an overlay string from 1923 current.overlay_string_index >= 0, this is an overlay string from
1918 pos. */ 1924 pos. */
1919 Lisp_Object string; 1925 Lisp_Object string;
1926
1927 /* If non-nil, we are processing a string that came
1928 from a `display' property given by an overlay. */
1929 Lisp_Object from_overlay;
1920 1930
1921 /* Stack of saved values. New entries are pushed when we begin to 1931 /* Stack of saved values. New entries are pushed when we begin to
1922 process an overlay string or a string from a `glyph' property. 1932 process an overlay string or a string from a `glyph' property.
1923 Entries are popped when we return to deliver display elements 1933 Entries are popped when we return to deliver display elements
1924 from what we previously had. */ 1934 from what we previously had. */
1951 } u; 1961 } u;
1952 1962
1953 /* current text and display positions. */ 1963 /* current text and display positions. */
1954 struct text_pos position; 1964 struct text_pos position;
1955 struct display_pos current; 1965 struct display_pos current;
1966 Lisp_Object from_overlay;
1956 enum glyph_row_area area; 1967 enum glyph_row_area area;
1957 enum it_method method; 1968 enum it_method method;
1958 unsigned multibyte_p : 1; 1969 unsigned multibyte_p : 1;
1959 unsigned string_from_display_prop_p : 1; 1970 unsigned string_from_display_prop_p : 1;
1960 unsigned display_ellipsis_p : 1; 1971 unsigned display_ellipsis_p : 1;
1967 stack[IT_STACK_SIZE]; 1978 stack[IT_STACK_SIZE];
1968 1979
1969 /* Stack pointer. */ 1980 /* Stack pointer. */
1970 int sp; 1981 int sp;
1971 1982
1983 /* -1 means selective display hides everything between a \r and the
1984 next newline; > 0 means hide lines indented more than that value. */
1985 int selective;
1986
1987 /* An enumeration describing what the next display element is
1988 after a call to get_next_display_element. */
1989 enum display_element_type what;
1990
1991 /* Face to use. */
1992 int face_id;
1993
1972 /* Setting of buffer-local variable selective-display-ellipsis. */ 1994 /* Setting of buffer-local variable selective-display-ellipsis. */
1973 unsigned selective_display_ellipsis_p : 1; 1995 unsigned selective_display_ellipsis_p : 1;
1974 1996
1975 /* 1 means control characters are translated into the form `^C' 1997 /* 1 means control characters are translated into the form `^C'
1976 where the `^' can be replaced by a display table entry. */ 1998 where the `^' can be replaced by a display table entry. */
1977 unsigned ctl_arrow_p : 1; 1999 unsigned ctl_arrow_p : 1;
1978 2000
1979 /* -1 means selective display hides everything between a \r and the 2001 /* 1 means lines are truncated. */
1980 next newline; > 0 means hide lines indented more than that value. */ 2002 unsigned truncate_lines_p : 1;
1981 int selective;
1982
1983 /* An enumeration describing what the next display element is
1984 after a call to get_next_display_element. */
1985 enum display_element_type what;
1986
1987 /* Face to use. */
1988 int face_id;
1989 2003
1990 /* Non-zero means that the current face has a box. */ 2004 /* Non-zero means that the current face has a box. */
1991 unsigned face_box_p : 1; 2005 unsigned face_box_p : 1;
1992 2006
1993 /* Non-null means that the current character is the first in a run 2007 /* Non-null means that the current character is the first in a run
2063 Object can be a Lisp string in case the current display element 2077 Object can be a Lisp string in case the current display element
2064 comes from an overlay string, or it is buffer. It may also be nil 2078 comes from an overlay string, or it is buffer. It may also be nil
2065 during mode-line update. Position is a position in object. */ 2079 during mode-line update. Position is a position in object. */
2066 Lisp_Object object; 2080 Lisp_Object object;
2067 struct text_pos position; 2081 struct text_pos position;
2068
2069 /* 1 means lines are truncated. */
2070 unsigned truncate_lines_p : 1;
2071 2082
2072 /* Number of columns per \t. */ 2083 /* Number of columns per \t. */
2073 short tab_width; 2084 short tab_width;
2074 2085
2075 /* Width in pixels of truncation and continuation glyphs. */ 2086 /* Width in pixels of truncation and continuation glyphs. */
2843 void init_frame_faces P_ ((struct frame *)); 2854 void init_frame_faces P_ ((struct frame *));
2844 void free_frame_faces P_ ((struct frame *)); 2855 void free_frame_faces P_ ((struct frame *));
2845 void recompute_basic_faces P_ ((struct frame *)); 2856 void recompute_basic_faces P_ ((struct frame *));
2846 int face_at_buffer_position P_ ((struct window *, int, int, int, int *, 2857 int face_at_buffer_position P_ ((struct window *, int, int, int, int *,
2847 int, int)); 2858 int, int));
2859 int face_for_overlay_string P_ ((struct window *, int, int,
2860 int, int *,
2861 int, int, Lisp_Object));
2848 int face_at_string_position P_ ((struct window *, Lisp_Object, int, int, int, 2862 int face_at_string_position P_ ((struct window *, Lisp_Object, int, int, int,
2849 int, int *, enum face_id, int)); 2863 int, int *, enum face_id, int));
2850 int merge_faces P_ ((struct frame *, Lisp_Object, int, int)); 2864 int merge_faces P_ ((struct frame *, Lisp_Object, int, int));
2851 int compute_char_face P_ ((struct frame *, int, Lisp_Object)); 2865 int compute_char_face P_ ((struct frame *, int, Lisp_Object));
2852 void free_all_realized_faces P_ ((Lisp_Object)); 2866 void free_all_realized_faces P_ ((Lisp_Object));