Mercurial > emacs
changeset 58270:1bc0c9f25148
(Fvertical_motion): In batch mode, use vmotion directly.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Tue, 16 Nov 2004 16:58:16 +0000 |
parents | 46739a0845d3 |
children | 8b3b0ccbe80b |
files | src/indent.c |
diffstat | 1 files changed, 27 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/src/indent.c Tue Nov 16 15:42:24 2004 +0000 +++ b/src/indent.c Tue Nov 16 16:58:16 2004 +0000 @@ -2061,29 +2061,38 @@ 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); - if (XINT (lines) != 0) - move_it_by_lines (&it, XINT (lines), 0); + /* 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); - SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it)); + 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;