From 62ddd2e073092759dca630d09de4f469cec5dc69 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 3 May 2002 10:17:41 +0000 Subject: [PATCH] (Fvertical_motion): Move to the start of the line containing PT before moving up or down. --- src/indent.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/indent.c b/src/indent.c index 80fc4a6739d..33a6c5b63db 100644 --- a/src/indent.c +++ b/src/indent.c @@ -2000,15 +2000,24 @@ whether or not it is currently displayed in some window.") old_buffer = w->buffer; XSETBUFFER (w->buffer, current_buffer); } - + SET_TEXT_POS (pt, PT, PT_BYTE); start_display (&it, w, pt); - move_it_by_lines (&it, XINT (lines), 0); + + /* Move to the start of the line containing PT. If we don't do + this, we start moving with IT->current_x == 0, while PT is really + at some x > 0. The effect is, in continuation lines, that 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. */ + move_it_by_lines (&it, 0, 0); + if (XINT (lines) != 0) + move_it_by_lines (&it, XINT (lines), 0); + SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it)); if (BUFFERP (old_buffer)) w->buffer = old_buffer; - + RETURN_UNGCPRO (make_number (it.vpos)); } -- 2.39.2