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;