]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix bug #16961 with visual-order cursor movement and word-wrap.
authorEli Zaretskii <eliz@gnu.org>
Fri, 7 Mar 2014 20:00:33 +0000 (22:00 +0200)
committerEli Zaretskii <eliz@gnu.org>
Fri, 7 Mar 2014 20:00:33 +0000 (22:00 +0200)
 src/xdisp.c (Fmove_point_visually): When under word-wrap, accept
 also return value of MOVE_POS_MATCH_OR_ZV from
 move_it_in_display_line_to, when moving from beginning of line to
 point's position.

src/ChangeLog
src/xdisp.c

index 6d1285a82da012772ff7299ec5f5760ea04c9ae3..a63995129cd480e5227b64c652e2bc8b21571f24 100644 (file)
@@ -1,3 +1,10 @@
+2014-03-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (Fmove_point_visually): When under word-wrap, accept
+       also return value of MOVE_POS_MATCH_OR_ZV from
+       move_it_in_display_line_to, when moving from beginning of line to
+       point's position.  (Bug#16961)
+
 2014-03-07  Martin Rudalics  <rudalics@gmx.at>
 
        * buffer.c (Vbuffer_list_update_hook): Doc-string fix.
index b8e08a30e1c0e9964b8aa0dd8bfc1fe5669a98b2..1513d4a9a877e76cd06ef97c2d8c0d4436cb98c0 100644 (file)
@@ -20895,7 +20895,12 @@ Value is the new character position of point.  */)
            new_pos = it.current.pos;
 
          while (it.current_x + it.pixel_width <= target_x
-                && rc == MOVE_X_REACHED)
+                && (rc == MOVE_X_REACHED
+                    /* Under word-wrap, move_it_in_display_line_to
+                       stops at correct coordinates, but sometimes
+                       returns MOVE_POS_MATCH_OR_ZV.  */
+                    || (it.line_wrap == WORD_WRAP
+                        && rc == MOVE_POS_MATCH_OR_ZV)))
            {
              int new_x = it.current_x + it.pixel_width;