mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-31 09:20:54 -08:00
(Frecenter): If ARG < 0, and on a window system
frame, count in some empty lines when we can't move -ARG lines down.
This commit is contained in:
parent
e8421604cd
commit
d466fa4dcf
1 changed files with 11 additions and 3 deletions
14
src/window.c
14
src/window.c
|
|
@ -4586,18 +4586,26 @@ and redisplay normally--don't erase and redraw the frame.")
|
|||
{
|
||||
struct it it;
|
||||
struct text_pos pt;
|
||||
int y0, y1, h;
|
||||
int y0, y1, h, nlines;
|
||||
|
||||
SET_TEXT_POS (pt, PT, PT_BYTE);
|
||||
start_display (&it, w, pt);
|
||||
y0 = it.current_y;
|
||||
|
||||
/* The amount of pixels we have to move hack is the window
|
||||
/* The amount of pixels we have to move back is the window
|
||||
height minus what's displayed in the line containing PT,
|
||||
and the lines below. */
|
||||
move_it_by_lines (&it, - XINT (arg) - 1, 1);
|
||||
nlines = - XINT (arg) - 1;
|
||||
move_it_by_lines (&it, nlines, 1);
|
||||
|
||||
y1 = it.current_y - y0;
|
||||
h = line_bottom_y (&it) - y1;
|
||||
|
||||
/* If we can't move down NLINES lines because we hit
|
||||
the end of the buffer, count in some empty lines. */
|
||||
if (it.vpos < nlines)
|
||||
y1 += (nlines - it.vpos) * CANON_Y_UNIT (it.f);
|
||||
|
||||
y0 = it.last_visible_y - y1 - h;
|
||||
|
||||
start_display (&it, w, pt);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue