Fix vertical cursor motion under bidi on auto-composed characters.
authorEli Zaretskii <eliz@gnu.org>
Mon, 22 Aug 2011 17:00:40 +0000 (20:00 +0300)
committerEli Zaretskii <eliz@gnu.org>
Mon, 22 Aug 2011 17:00:40 +0000 (20:00 +0300)
 src/xdisp.c (BUFFER_POS_REACHED_P): If this is a composition,
 consider it a hit if to_charpos is anywhere in the range of the
 composed buffer positions.

src/ChangeLog
src/xdisp.c

index 243a39a..e3cf754 100644 (file)
@@ -1,3 +1,9 @@
+2011-08-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (BUFFER_POS_REACHED_P): If this is a composition,
+       consider it a hit if to_charpos is anywhere in the range of the
+       composed buffer positions.
+
 2011-08-22  Chong Yidong  <cyd@stupidchicken.com>
 
        * image.c (gif_load): Don't assume that each subimage has the same
index e773830..1878327 100644 (file)
@@ -7699,7 +7699,12 @@ move_it_in_display_line_to (struct it *it,
   ((op & MOVE_TO_POS) != 0                                     \
    && BUFFERP (it->object)                                     \
    && (IT_CHARPOS (*it) == to_charpos                          \
-       || (!it->bidi_p && IT_CHARPOS (*it) > to_charpos))      \
+       || (!it->bidi_p && IT_CHARPOS (*it) > to_charpos)       \
+       || (it->what == IT_COMPOSITION                          \
+          && ((IT_CHARPOS (*it) > to_charpos                   \
+               && to_charpos >= it->cmp_it.charpos)            \
+              || (IT_CHARPOS (*it) < to_charpos                \
+                  && to_charpos <= it->cmp_it.charpos))))      \
    && (it->method == GET_FROM_BUFFER                           \
        || (it->method == GET_FROM_DISPLAY_VECTOR               \
           && it->dpvec + it->current.dpvec_index + 1 >= it->dpend)))