From: Eli Zaretskii Date: Wed, 21 Nov 2012 19:28:14 +0000 (+0200) Subject: Fix bug #12930 with vertical-motion through a display string. X-Git-Tag: emacs-24.2.90~18 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=cb5867b1f8af39ffd70767fc06fd364bca67e968;p=emacs.git Fix bug #12930 with vertical-motion through a display string. src/indent.c (Fvertical_motion): If the starting position is covered by a display string, return to one position before that, to avoid overshooting it inside move_it_to. --- diff --git a/src/ChangeLog b/src/ChangeLog index f7cb0fe850f..f760adf313f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2012-11-21 Eli Zaretskii + + * indent.c (Fvertical_motion): If the starting position is covered + by a display string, return to one position before that, to avoid + overshooting it inside move_it_to. (Bug#12930) + 2012-11-20 Daniel Colascione * w32fns.c (Fx_file_dialog): diff --git a/src/indent.c b/src/indent.c index bbc944d2518..33322287c9d 100644 --- a/src/indent.c +++ b/src/indent.c @@ -2057,7 +2057,13 @@ whether or not it is currently displayed in some window. */) comment said this is "so we don't move too far" (2005-01-19 checkin by kfs). But this does nothing useful that I can tell, and it causes Bug#2694 . -- cyd */ - move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS); + /* When the position we started from is covered by a display + string, move_it_to will overshoot it, while vertical-motion + wants to put the cursor _before_ the display string. So in + that case, we move to buffer position before the display + string, and avoid overshooting. */ + move_it_to (&it, disp_string_at_start_p ? PT - 1 : PT, + -1, -1, -1, MOVE_TO_POS); /* IT may move too far if truncate-lines is on and PT lies beyond the right margin. IT may also move too far if the