From b54a75394aeba1cc5fba04bdb0cd0acd0e1b309b Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Thu, 18 Nov 2004 11:00:38 +0000 Subject: [PATCH] (Fvertical_motion): Undo 2004-11-16 change. Instead, move back again if reseating moves too far ahead. --- src/ChangeLog | 7 ++++++- src/indent.c | 18 +++++++++--------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index c9c4edd83fc..0efd6d5d11c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,4 +1,9 @@ -2004-11-16 Luc Teirlinck +2004-11-18 Kim F. Storm + + * indent.c (Fvertical_motion): Undo 2004-11-16 change. + Instead, move back again if reseating moves too far ahead. + +2004-11-17 Luc Teirlinck * xdisp.c (message3): Call clear_message. diff --git a/src/indent.c b/src/indent.c index 0ece40790a7..0b73751a5f7 100644 --- a/src/indent.c +++ b/src/indent.c @@ -2078,16 +2078,16 @@ whether or not it is currently displayed in some window. */) 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); -- 2.39.2