X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/9e6302cfc8cc438f34a2c9765a7d48db2aec4e1c..9a8edcd9aba1650f68d7aea373bab65322585337:/src/window.c diff --git a/src/window.c b/src/window.c index cf7fa44ae4..e123b89aae 100644 --- a/src/window.c +++ b/src/window.c @@ -2910,9 +2910,11 @@ window-start value is reasonable when this function is called. */) { struct window *w, *r, *s; struct frame *f; - Lisp_Object sibling, pwindow, swindow IF_LINT (= Qnil), delta; - ptrdiff_t startpos IF_LINT (= 0), startbyte IF_LINT (= 0); - int top IF_LINT (= 0), new_top; + Lisp_Object sibling, pwindow, delta; + Lisp_Object swindow UNINIT; + ptrdiff_t startpos UNINIT, startbyte UNINIT; + int top UNINIT; + int new_top; bool resize_failed = false; w = decode_valid_window (window); @@ -5649,21 +5651,14 @@ displayed_window_lines (struct window *w) bottom_y = line_bottom_y (&it); bidi_unshelve_cache (itdata, false); - /* rms: On a non-window display, - the value of it.vpos at the bottom of the screen - seems to be 1 larger than window_box_height (w). - This kludge fixes a bug whereby (move-to-window-line -1) - when ZV is on the last screen line - moves to the previous screen line instead of the last one. */ - if (! FRAME_WINDOW_P (XFRAME (w->frame))) - height++; - /* Add in empty lines at the bottom of the window. */ if (bottom_y < height) { int uy = FRAME_LINE_HEIGHT (it.f); it.vpos += (height - bottom_y + uy - 1) / uy; } + else if (bottom_y == height) + it.vpos++; if (old_buffer) set_buffer_internal (old_buffer); @@ -5693,7 +5688,7 @@ and redisplay normally--don't erase and redraw the frame. */) struct buffer *buf = XBUFFER (w->contents); bool center_p = false; ptrdiff_t charpos, bytepos; - EMACS_INT iarg IF_LINT (= 0); + EMACS_INT iarg; int this_scroll_margin; if (buf != current_buffer) @@ -5938,7 +5933,12 @@ DEFUN ("move-to-window-line", Fmove_to_window_line, Smove_to_window_line, doc: /* Position point relative to window. ARG nil means position point at center of window. Else, ARG specifies vertical position within the window; -zero means top of window, negative means relative to bottom of window. */) +zero means top of window, negative means relative to bottom +of window, -1 meaning the last fully visible display line +of the window. + +Value is the screen line of the window point moved to, counting +from the top of the window. */) (Lisp_Object arg) { struct window *w = XWINDOW (selected_window);