From b646ea12bdcdb31abece8ecce8bfd2e4ea1a682a Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 7 Mar 2014 22:00:33 +0200 Subject: [PATCH] Fix bug #16961 with visual-order cursor movement and word-wrap. 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 | 7 +++++++ src/xdisp.c | 7 ++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index 6d1285a82da..a63995129cd 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2014-03-07 Eli Zaretskii + + * 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 * buffer.c (Vbuffer_list_update_hook): Doc-string fix. diff --git a/src/xdisp.c b/src/xdisp.c index b8e08a30e1c..1513d4a9a87 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -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; -- 2.39.2