2061 |
XSETBUFFER (w->buffer, current_buffer); |
XSETBUFFER (w->buffer, current_buffer); |
2062 |
} |
} |
2063 |
|
|
2064 |
SET_TEXT_POS (pt, PT, PT_BYTE); |
if (noninteractive) |
|
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) |
|
2065 |
{ |
{ |
2066 |
reseat_at_previous_visible_line_start (&it); |
struct position pos; |
2067 |
it.current_x = it.hpos = 0; |
pos = *vmotion (PT, XINT (lines), w); |
2068 |
move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS); |
SET_PT_BOTH (pos.bufpos, pos.bytepos); |
|
it.vpos = 0; |
|
2069 |
} |
} |
2070 |
else |
else |
2071 |
move_it_by_lines (&it, 0, 0); |
{ |
2072 |
|
SET_TEXT_POS (pt, PT, PT_BYTE); |
2073 |
|
start_display (&it, w, pt); |
2074 |
|
|
2075 |
if (XINT (lines) != 0) |
/* Scan from the start of the line containing PT. If we don't |
2076 |
move_it_by_lines (&it, XINT (lines), 0); |
do this, we start moving with IT->current_x == 0, while PT is |
2077 |
|
really at some x > 0. The effect is, in continuation lines, that |
2078 |
|
we end up with the iterator placed at where it thinks X is 0, |
2079 |
|
while the end position is really at some X > 0, the same X that |
2080 |
|
PT had. */ |
2081 |
|
if (XINT (lines) < 0) |
2082 |
|
{ |
2083 |
|
reseat_at_previous_visible_line_start (&it); |
2084 |
|
it.current_x = it.hpos = 0; |
2085 |
|
move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS); |
2086 |
|
it.vpos = 0; |
2087 |
|
} |
2088 |
|
else |
2089 |
|
move_it_by_lines (&it, 0, 0); |
2090 |
|
|
2091 |
SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it)); |
if (XINT (lines) != 0) |
2092 |
|
move_it_by_lines (&it, XINT (lines), 0); |
2093 |
|
|
2094 |
|
SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it)); |
2095 |
|
} |
2096 |
|
|
2097 |
if (BUFFERP (old_buffer)) |
if (BUFFERP (old_buffer)) |
2098 |
w->buffer = old_buffer; |
w->buffer = old_buffer; |