Mercurial > emacs
diff src/dispextern.h @ 107641:d65c199e8bdd
Continue work on cursor movement in continued lines.
xdisp.c (try_cursor_movement): Give up if rows are
bidi-reordered and point moved backwards. Examine all the
candidate rows that occlude point, to return the best match.
(row_containing_pos): With bidi-reordered rows, don't return the
first one that occludes point; rather, examine all candidates and
return the best match, with he glyph that's closest to point.
(display_line): When looking for min position, don't consider
negative values of glyph->charpos. (Fixes a crash with "C-x 3" at
ZV.) Record the position after EOL in it->eol_pos, and use it to
set end_pos of the last row produced for a continued line. Fix
the condition for passing candidate rows to set_cursor_from_row:
check ends_at_zv_p flag of the best candidate row, not of the
current row.
dispextern.h (struct it): New member eol_pos.
.gdbinit (prowlims): Display the ends_at_zv_p flag.
| author | Eli Zaretskii <eliz@gnu.org> |
|---|---|
| date | Sat, 13 Mar 2010 11:38:01 -0500 |
| parents | a5eeeb631d8a |
| children | 1d298baf84b9 |
line wrap: on
line diff
--- a/src/dispextern.h Sat Mar 13 04:02:01 2010 -0500 +++ b/src/dispextern.h Sat Mar 13 11:38:01 2010 -0500 @@ -2016,8 +2016,8 @@ iterator position in `current'. */ EMACS_INT prev_stop; - /* Last stop position iterated across whose embedding level is equal - to the current paragraph's embedding level. */ + /* Last stop position iterated across whose bidi embedding level is + equal to the current paragraph's base embedding level. */ EMACS_INT base_level_stop; /* Maximum string or buffer position + 1. ZV when iterating over @@ -2327,6 +2327,14 @@ incremented/reset by display_line, move_it_to etc. */ int continuation_lines_width; + /* Buffer position that ends the buffer text line being iterated. + This is normally the position after the newline at EOL. If this + is the last line of the buffer and it doesn't have a newline, + value is ZV/ZV_BYTE. Set and used only if IT->bidi_p, for + setting the end position of glyph rows produced for continuation + lines, see display_line. */ + struct text_pos eol_pos; + /* Current y-position. Automatically incremented by the height of glyph_row in move_it_to and display_line. */ int current_y;
