Commit 6df71429 authored by Richard M. Stallman's avatar Richard M. Stallman

(Fvertical_motion): In batch mode, use vmotion directly.

parent e20d27dc
......@@ -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;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment