# HG changeset patch # User Kim F. Storm # Date 1100775614 0 # Node ID 5358f62b079527f4ac8572dc28741a7f40513535 # Parent 8e5e564777ba901e80884dd8a25ff671aeb3e05f (Fvertical_motion): Undo 2004-11-16 change. Instead, move back again if reseating moves too far ahead. diff -r 8e5e564777ba -r 5358f62b0795 src/indent.c --- a/src/indent.c Thu Nov 18 05:28:03 2004 +0000 +++ b/src/indent.c Thu Nov 18 11:00:14 2004 +0000 @@ -2078,16 +2078,16 @@ we end up with the iterator placed at where it thinks X is 0, while the end position is really at some X > 0, the same X that PT had. */ - if (XINT (lines) < 0) - { - reseat_at_previous_visible_line_start (&it); - it.current_x = it.hpos = 0; - move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS); - it.vpos = 0; - } - else - move_it_by_lines (&it, 0, 0); + reseat_at_previous_visible_line_start (&it); + it.current_x = it.hpos = 0; + move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS); + /* Move back if we got too far. This may happen if + truncate-lines is on and PT is beyond right margin. */ + if (IT_CHARPOS (it) > PT && XINT (lines) > 0) + move_it_by_lines (&it, -1, 0); + + it.vpos = 0; if (XINT (lines) != 0) move_it_by_lines (&it, XINT (lines), 0);