Commit e187cf71 authored by Gerd Moellmann's avatar Gerd Moellmann
Browse files

(handle_single_display_prop): Set iterator's position

to where the `display' property starts, like for images.
(dump_glyph): New function.
(dump_glyph_row): Use it.  Dump info about marginal areas.
parent 3478eafc
...@@ -2859,6 +2859,10 @@ handle_single_display_prop (it, prop, object, position) ...@@ -2859,6 +2859,10 @@ handle_single_display_prop (it, prop, object, position)
it->method = next_element_from_string; it->method = next_element_from_string;
it->stop_charpos = 0; it->stop_charpos = 0;
it->string_from_display_prop_p = 1; it->string_from_display_prop_p = 1;
/* Say that we haven't consumed the characters with
`display' property yet. The call to pop_it in
set_iterator_to_next will clean this up. */
*position = start_pos;
} }
else if (CONSP (value) && EQ (XCAR (value), Qspace)) else if (CONSP (value) && EQ (XCAR (value), Qspace))
{ {
...@@ -11374,6 +11378,7 @@ try_window_id (w) ...@@ -11374,6 +11378,7 @@ try_window_id (w)
void dump_glyph_row P_ ((struct glyph_matrix *, int, int)); void dump_glyph_row P_ ((struct glyph_matrix *, int, int));
void dump_glyph_matrix P_ ((struct glyph_matrix *, int)); void dump_glyph_matrix P_ ((struct glyph_matrix *, int));
void dump_glyph P_ ((struct glyph_row *, struct glyph *, int));
/* Dump the contents of glyph matrix MATRIX on stderr. /* Dump the contents of glyph matrix MATRIX on stderr.
...@@ -11393,6 +11398,77 @@ dump_glyph_matrix (matrix, glyphs) ...@@ -11393,6 +11398,77 @@ dump_glyph_matrix (matrix, glyphs)
} }
/* Dump contents of glyph GLYPH to stderr. ROW and AREA are
the glyph row and area where the glyph comes from. */
void
dump_glyph (row, glyph, area)
struct glyph_row *row;
struct glyph *glyph;
int area;
{
if (glyph->type == CHAR_GLYPH)
{
fprintf (stderr,
" %5d %4c %6d %c %3d 0x%05x %c %4d %1.1d%1.1d\n",
glyph - row->glyphs[TEXT_AREA],
'C',
glyph->charpos,
(BUFFERP (glyph->object)
? 'B'
: (STRINGP (glyph->object)
? 'S'
: '-')),
glyph->pixel_width,
glyph->u.ch,
(glyph->u.ch < 0x80 && glyph->u.ch >= ' '
? glyph->u.ch
: '.'),
glyph->face_id,
glyph->left_box_line_p,
glyph->right_box_line_p);
}
else if (glyph->type == STRETCH_GLYPH)
{
fprintf (stderr,
" %5d %4c %6d %c %3d 0x%05x %c %4d %1.1d%1.1d\n",
glyph - row->glyphs[TEXT_AREA],
'S',
glyph->charpos,
(BUFFERP (glyph->object)
? 'B'
: (STRINGP (glyph->object)
? 'S'
: '-')),
glyph->pixel_width,
0,
'.',
glyph->face_id,
glyph->left_box_line_p,
glyph->right_box_line_p);
}
else if (glyph->type == IMAGE_GLYPH)
{
fprintf (stderr,
" %5d %4c %6d %c %3d 0x%05x %c %4d %1.1d%1.1d\n",
glyph - row->glyphs[TEXT_AREA],
'I',
glyph->charpos,
(BUFFERP (glyph->object)
? 'B'
: (STRINGP (glyph->object)
? 'S'
: '-')),
glyph->pixel_width,
glyph->u.img_id,
'.',
glyph->face_id,
glyph->left_box_line_p,
glyph->right_box_line_p);
}
}
/* Dump the contents of glyph row at VPOS in MATRIX to stderr. /* Dump the contents of glyph row at VPOS in MATRIX to stderr.
GLYPHS 0 means don't show glyph contents. GLYPHS 0 means don't show glyph contents.
GLYPHS 1 means show glyphs in short form GLYPHS 1 means show glyphs in short form
...@@ -11453,106 +11529,48 @@ dump_glyph_row (matrix, vpos, glyphs) ...@@ -11453,106 +11529,48 @@ dump_glyph_row (matrix, vpos, glyphs)
if (glyphs > 1) if (glyphs > 1)
{ {
struct glyph *glyph, *glyph_end; int area;
int prev_had_glyphs_p;
for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area)
glyph = row->glyphs[TEXT_AREA]; {
glyph_end = glyph + row->used[TEXT_AREA]; struct glyph *glyph, *glyph_end;
glyph = row->glyphs[area];
glyph_end = glyph + row->used[area];
/* Glyph for a line end in text. */ /* Glyph for a line end in text. */
if (glyph == glyph_end && glyph->charpos > 0) if (glyph == glyph_end && glyph->charpos > 0)
++glyph_end; ++glyph_end;
if (glyph < glyph_end) if (glyph < glyph_end)
{ fprintf (stderr, " Glyph Type Pos O W Code C Face LR\n");
fprintf (stderr, " Glyph Type Pos O W Code C Face LR\n");
prev_had_glyphs_p = 1;
}
else
prev_had_glyphs_p = 0;
while (glyph < glyph_end) for (; glyph < glyph_end; ++glyph)
{ dump_glyph (row, glyph, area);
if (glyph->type == CHAR_GLYPH)
{
fprintf (stderr,
" %5d %4c %6d %c %3d 0x%05x %c %4d %1.1d%1.1d\n",
glyph - row->glyphs[TEXT_AREA],
'C',
glyph->charpos,
(BUFFERP (glyph->object)
? 'B'
: (STRINGP (glyph->object)
? 'S'
: '-')),
glyph->pixel_width,
glyph->u.ch,
(glyph->u.ch < 0x80 && glyph->u.ch >= ' '
? glyph->u.ch
: '.'),
glyph->face_id,
glyph->left_box_line_p,
glyph->right_box_line_p);
}
else if (glyph->type == STRETCH_GLYPH)
{
fprintf (stderr,
" %5d %4c %6d %c %3d 0x%05x %c %4d %1.1d%1.1d\n",
glyph - row->glyphs[TEXT_AREA],
'S',
glyph->charpos,
(BUFFERP (glyph->object)
? 'B'
: (STRINGP (glyph->object)
? 'S'
: '-')),
glyph->pixel_width,
0,
'.',
glyph->face_id,
glyph->left_box_line_p,
glyph->right_box_line_p);
}
else if (glyph->type == IMAGE_GLYPH)
{
fprintf (stderr,
" %5d %4c %6d %c %3d 0x%05x %c %4d %1.1d%1.1d\n",
glyph - row->glyphs[TEXT_AREA],
'I',
glyph->charpos,
(BUFFERP (glyph->object)
? 'B'
: (STRINGP (glyph->object)
? 'S'
: '-')),
glyph->pixel_width,
glyph->u.img_id,
'.',
glyph->face_id,
glyph->left_box_line_p,
glyph->right_box_line_p);
}
++glyph;
} }
} }
else if (glyphs == 1) else if (glyphs == 1)
{ {
char *s = (char *) alloca (row->used[TEXT_AREA] + 1); int area;
int i;
for (i = 0; i < row->used[TEXT_AREA]; ++i) for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area)
{ {
struct glyph *glyph = row->glyphs[TEXT_AREA] + i; char *s = (char *) alloca (row->used[area] + 1);
if (glyph->type == CHAR_GLYPH int i;
&& glyph->u.ch < 0x80
&& glyph->u.ch >= ' ') for (i = 0; i < row->used[area]; ++i)
s[i] = glyph->u.ch; {
else struct glyph *glyph = row->glyphs[area] + i;
s[i] = '.'; if (glyph->type == CHAR_GLYPH
} && glyph->u.ch < 0x80
&& glyph->u.ch >= ' ')
s[i] = glyph->u.ch;
else
s[i] = '.';
}
s[i] = '\0'; s[i] = '\0';
fprintf (stderr, "%3d: (%d) '%s'\n", vpos, row->enabled_p, s); fprintf (stderr, "%3d: (%d) '%s'\n", vpos, row->enabled_p, s);
}
} }
} }
......
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