Commit c4628384 authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

(display_text_line): Use the face properties of the overlay arrow, if any.

parent 70fcd1c2
...@@ -42,6 +42,8 @@ extern void set_frame_menubar (); ...@@ -42,6 +42,8 @@ extern void set_frame_menubar ();
extern int interrupt_input; extern int interrupt_input;
extern int command_loop_level; extern int command_loop_level;
extern Lisp_Object Qface;
/* Nonzero means print newline before next minibuffer message. */ /* Nonzero means print newline before next minibuffer message. */
int noninteractive_need_newline; int noninteractive_need_newline;
...@@ -2488,8 +2490,26 @@ display_text_line (w, start, vpos, hpos, taboffset) ...@@ -2488,8 +2490,26 @@ display_text_line (w, start, vpos, hpos, taboffset)
if (len > width) if (len > width)
len = width; len = width;
for (i = 0; i < len; i++) if (!NULL_INTERVAL_P (XSTRING (Voverlay_arrow_string)->intervals))
leftmargin[i] = p[i]; {
/* If the arrow string has text props, obey them when displaying. */
for (i = 0; i < len; i++)
{
int c = p[i];
Lisp_Object face, ilisp;
int newface;
XFASTINT (ilisp) = i;
face = Fget_text_property (ilisp, Qface, Voverlay_arrow_string);
newface = compute_glyph_face_1 (f, face, 0);
leftmargin[i] = FAST_MAKE_GLYPH (c, newface);
}
}
else
{
for (i = 0; i < len; i++)
leftmargin[i] = p[i];
}
/* Bug in SunOS 4.1.1 compiler requires this intermediate variable. */ /* Bug in SunOS 4.1.1 compiler requires this intermediate variable. */
arrow_end = (leftmargin - desired_glyphs->glyphs[vpos]) + len; arrow_end = (leftmargin - desired_glyphs->glyphs[vpos]) + len;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment