]> git.eshelyaron.com Git - emacs.git/commitdiff
(struct it): New elt string_overlays.
authorRichard M. Stallman <rms@gnu.org>
Sun, 4 Nov 2007 07:31:56 +0000 (07:31 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sun, 4 Nov 2007 07:31:56 +0000 (07:31 +0000)
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.

src/dispextern.h

index c59403b020564a9fcc834ed3736ffc0cd8091076..a3c626374970ac249111537aeb639cfeb9cdb1eb 100644 (file)
@@ -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));