From: Eli Zaretskii Date: Fri, 2 Apr 2010 09:35:01 +0000 (+0300) Subject: xdisp.c (set_cursor_from_row): Improve comments. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~607^2 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9cb52861f287cbad4608a5fceddae5bac1a90ba6;p=emacs.git xdisp.c (set_cursor_from_row): Improve comments. --- diff --git a/src/xdisp.c b/src/xdisp.c index c6ae6ad4c14..997c76934d4 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -12606,7 +12606,8 @@ set_cursor_from_row (w, row, matrix, delta, delta_bytes, dy, dvpos) } if (INTEGERP (glyph->object) && glyph->charpos < 0) --glyph; - /* By default, put the cursor on the rightmost glyph. */ + /* By default, in reversed rows we put the cursor on the + rightmost (first in the reading order) glyph. */ for (g = end + 1; g < glyph; g++) x += g->pixel_width; cursor_x = x; @@ -12683,7 +12684,16 @@ set_cursor_from_row (w, row, matrix, delta, delta_bytes, dy, dvpos) bpos_covered = bpos_max + XINT (chprop); /* If the `cursor' property covers buffer positions up to and including point, we should display cursor on - this glyph. */ + this glyph. Note that overlays and text properties + with string values stop bidi reordering, so every + buffer position to the left of the string is always + smaller than any position to the right of the + string. Therefore, if a `cursor' property on one + of the string's characters has an integer value, we + will break out of the loop below _before_ we get to + the position match above. IOW, integer values of + the `cursor' property override the "exact match for + point" strategy of positioning the cursor. */ /* Implementation note: bpos_max == pt_old when, e.g., we are in an empty line, where bpos_max is set to MATRIX_ROW_START_CHARPOS, see above. */