summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>2007-11-04 07:31:56 +0000
committerRichard M. Stallman <rms@gnu.org>2007-11-04 07:31:56 +0000
commitc69a28f1e6fe35ccac4848a4a7644fed1250afe3 (patch)
treec910533710a85c5b71c420e596184d07324fd6f8
parent6519d955f965373c6142fcdaad738cd4bf575038 (diff)
downloademacs-c69a28f1e6fe35ccac4848a4a7644fed1250afe3.tar.gz
(struct it): New elt string_overlays.
New elt from_overlay, also in stack. Rearrange a few elements. (face_for_overlay_string): Decl renamed from face_at_buffer_position_no_overlays, and add argument.
-rw-r--r--src/dispextern.h41
1 files changed, 25 insertions, 16 deletions
diff --git a/src/dispextern.h b/src/dispextern.h
index c59403b0205..a3c62637497 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -1912,20 +1912,28 @@ struct it
position in overlay strings etc. */
struct display_pos current;
+ /* Total number of overlay strings to process. This can be >
+ OVERLAY_STRING_CHUNK_SIZE. */
+ int n_overlay_strings;
+
/* Vector of overlays to process. Overlay strings are processed
OVERLAY_STRING_CHUNK_SIZE at a time. */
#define OVERLAY_STRING_CHUNK_SIZE 16
Lisp_Object overlay_strings[OVERLAY_STRING_CHUNK_SIZE];
- /* Total number of overlay strings to process. This can be >
- OVERLAY_STRING_CHUNK_SIZE. */
- int n_overlay_strings;
+ /* For each overlay string, the overlay it came from. */
+#define OVERLAY_STRING_CHUNK_SIZE 16
+ Lisp_Object string_overlays[OVERLAY_STRING_CHUNK_SIZE];
/* If non-nil, a Lisp string being processed. If
current.overlay_string_index >= 0, this is an overlay string from
pos. */
Lisp_Object string;
+ /* If non-nil, we are processing a string that came
+ from a `display' property given by an overlay. */
+ Lisp_Object from_overlay;
+
/* Stack of saved values. New entries are pushed when we begin to
process an overlay string or a string from a `glyph' property.
Entries are popped when we return to deliver display elements
@@ -1961,6 +1969,7 @@ struct it
/* current text and display positions. */
struct text_pos position;
struct display_pos current;
+ Lisp_Object from_overlay;
enum glyph_row_area area;
enum it_method method;
unsigned multibyte_p : 1;
@@ -1977,13 +1986,6 @@ struct it
/* Stack pointer. */
int sp;
- /* Setting of buffer-local variable selective-display-ellipsis. */
- unsigned selective_display_ellipsis_p : 1;
-
- /* 1 means control characters are translated into the form `^C'
- where the `^' can be replaced by a display table entry. */
- unsigned ctl_arrow_p : 1;
-
/* -1 means selective display hides everything between a \r and the
next newline; > 0 means hide lines indented more than that value. */
int selective;
@@ -1995,6 +1997,16 @@ struct it
/* Face to use. */
int face_id;
+ /* Setting of buffer-local variable selective-display-ellipsis. */
+ unsigned selective_display_ellipsis_p : 1;
+
+ /* 1 means control characters are translated into the form `^C'
+ where the `^' can be replaced by a display table entry. */
+ unsigned ctl_arrow_p : 1;
+
+ /* 1 means lines are truncated. */
+ unsigned truncate_lines_p : 1;
+
/* Non-zero means that the current face has a box. */
unsigned face_box_p : 1;
@@ -2074,9 +2086,6 @@ struct it
Lisp_Object object;
struct text_pos position;
- /* 1 means lines are truncated. */
- unsigned truncate_lines_p : 1;
-
/* Number of columns per \t. */
short tab_width;
@@ -2859,9 +2868,9 @@ 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));
-int face_at_buffer_position_no_overlays P_ ((struct window *, int, int,
- int, int *,
- int, int));
+int face_for_overlay_string P_ ((struct window *, int, int,
+ int, int *,
+ int, int, Lisp_Object));
int face_at_string_position P_ ((struct window *, Lisp_Object, int, int, int,
int, int *, enum face_id, int));
int merge_faces P_ ((struct frame *, Lisp_Object, int, int));