From 6df7142943fd0c7928723cea5c0e17086e918a47 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Tue, 16 Nov 2004 16:58:16 +0000 Subject: [PATCH] (Fvertical_motion): In batch mode, use vmotion directly. --- src/indent.c | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/src/indent.c b/src/indent.c index 559b69d9311..0ece40790a7 100644 --- a/src/indent.c +++ b/src/indent.c @@ -2061,29 +2061,38 @@ whether or not it is currently displayed in some window. */) XSETBUFFER (w->buffer, current_buffer); } - SET_TEXT_POS (pt, PT, PT_BYTE); - start_display (&it, w, pt); - - /* Scan from 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. */ - if (XINT (lines) < 0) + if (noninteractive) { - 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; + struct position pos; + pos = *vmotion (PT, XINT (lines), w); + SET_PT_BOTH (pos.bufpos, pos.bytepos); } else - move_it_by_lines (&it, 0, 0); + { + SET_TEXT_POS (pt, PT, PT_BYTE); + start_display (&it, w, pt); + + /* Scan from 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. */ + 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); - if (XINT (lines) != 0) - move_it_by_lines (&it, XINT (lines), 0); + if (XINT (lines) != 0) + move_it_by_lines (&it, XINT (lines), 0); - SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it)); + SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it)); + } if (BUFFERP (old_buffer)) w->buffer = old_buffer; -- 2.11.4.GIT