5396 |
else if (target_y >= it->current_y + line_height |
else if (target_y >= it->current_y + line_height |
5397 |
&& IT_CHARPOS (*it) < ZV) |
&& IT_CHARPOS (*it) < ZV) |
5398 |
{ |
{ |
5399 |
/* Should move forward by at least one line, maybe more. */ |
/* Should move forward by at least one line, maybe more. |
5400 |
do |
|
5401 |
|
Note: Calling move_it_by_lines can be expensive on |
5402 |
|
terminal frames, where compute_motion is used (via |
5403 |
|
vmotion) to do the job, when there are very long lines |
5404 |
|
and truncate-lines is nil. That's the reason for |
5405 |
|
treating terminal frames specially here. */ |
5406 |
|
|
5407 |
|
if (!FRAME_WINDOW_P (it->f)) |
5408 |
|
move_it_vertically (it, target_y - (it->current_y + line_height)); |
5409 |
|
else |
5410 |
{ |
{ |
5411 |
move_it_by_lines (it, 1, 1); |
do |
5412 |
|
{ |
5413 |
|
move_it_by_lines (it, 1, 1); |
5414 |
|
} |
5415 |
|
while (target_y >= line_bottom_y (it) && IT_CHARPOS (*it) < ZV); |
5416 |
} |
} |
|
while (target_y >= line_bottom_y (it) && IT_CHARPOS (*it) < ZV); |
|
5417 |
|
|
5418 |
xassert (IT_CHARPOS (*it) >= BEGV); |
xassert (IT_CHARPOS (*it) >= BEGV); |
5419 |
} |
} |