Mercurial > emacs
changeset 58308:5358f62b0795
(Fvertical_motion): Undo 2004-11-16 change.
Instead, move back again if reseating moves too far ahead.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Thu, 18 Nov 2004 11:00:14 +0000 |
parents | 8e5e564777ba |
children | 759dcb81744c |
files | src/indent.c |
diffstat | 1 files changed, 9 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- 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);