Fix bug #13277 with TTY cursor positioning in a line with overlay arrow.

src/xdisp.c (set_cursor_from_row): Don't confuse a truncation or
 continuation glyph on a TTY with an indication of an empty line.
 src/dispextern.h: Improve commentary to glyph->charpos and
 glyph->object.
This commit is contained in:
Eli Zaretskii 2012-12-27 19:29:14 +02:00
parent c88943a2a4
commit 7a3a74936f
3 changed files with 21 additions and 5 deletions

View file

@ -1,3 +1,9 @@
2012-12-27 Eli Zaretskii <eliz@gnu.org>
* xdisp.c (set_cursor_from_row): Don't confuse a truncation or
continuation glyph on a TTY with an indication of an empty line.
(Bug#13277)
2012-12-27 Glenn Morris <rgm@gnu.org>
* cygw32.c (Fcygwin_convert_file_name_to_windows)

View file

@ -317,13 +317,18 @@ struct glyph
Lisp string, this is a position in that string. If it is a
buffer, this is a position in that buffer. A value of -1
together with a null object means glyph is a truncation glyph at
the start of a row. */
the start of a row. Right truncation and continuation glyphs at
the right edge of a row have their position set to the next
buffer position that is not shown on this row. Glyphs inserted
by redisplay, such as the empty space after the end of a line on
TTYs, have this set to -1. */
ptrdiff_t charpos;
/* Lisp object source of this glyph. Currently either a buffer or
a string, if the glyph was produced from characters which came from
/* Lisp object source of this glyph. Currently either a buffer or a
string, if the glyph was produced from characters which came from
a buffer or a string; or 0 if the glyph was inserted by redisplay
for its own purposes such as padding. */
for its own purposes such as padding or truncation/continuation
glyphs on TTYs. */
Lisp_Object object;
/* Width in pixels. */

View file

@ -14241,7 +14241,12 @@ set_cursor_from_row (struct window *w, struct glyph_row *row,
CHARPOS is zero or negative. */
int empty_line_p =
(row->reversed_p ? glyph > glyphs_end : glyph < glyphs_end)
&& INTEGERP (glyph->object) && glyph->charpos > 0;
&& INTEGERP (glyph->object) && glyph->charpos > 0
/* On a TTY, continued and truncated rows also have a glyph at
their end whose OBJECT is zero and whose CHARPOS is
positive (the continuation and truncation glyphs), but such
rows are obviously not "empty". */
&& !(row->continued_p || row->truncated_on_right_p);
if (row->ends_in_ellipsis_p && pos_after == last_pos)
{