aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2016-06-27 18:27:58 +0300
committerEli Zaretskii2016-06-27 18:27:58 +0300
commitdefdee72c4de5e1aa4fc5c63b81983afc969769a (patch)
treea500f92aed9a3dda5b4d62ff06fc54792a943f47 /src
parent8040d99b6294ad798d4ab677ba20082b45fd2e7d (diff)
downloademacs-defdee72c4de5e1aa4fc5c63b81983afc969769a.tar.gz
emacs-defdee72c4de5e1aa4fc5c63b81983afc969769a.zip
Fix 'move-to-window-line' when EOB is on last screen line
* src/window.c (displayed_window_lines): Fix an off-by-one error when the bottom of the last display line is exactly at window's last pixel. Remove kludgey fix for TTY frames that is no longer needed. (Bug#15760) (Fmove_to_window_line): Doc fix. * doc/lispref/positions.texi (Screen Lines): Clarify and make more accurate the documentation of 'move-to-window-line'.
Diffstat (limited to 'src')
-rw-r--r--src/window.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/window.c b/src/window.c
index fe10241c45c..e123b89aae3 100644
--- a/src/window.c
+++ b/src/window.c
@@ -5651,21 +5651,14 @@ displayed_window_lines (struct window *w)
5651 bottom_y = line_bottom_y (&it); 5651 bottom_y = line_bottom_y (&it);
5652 bidi_unshelve_cache (itdata, false); 5652 bidi_unshelve_cache (itdata, false);
5653 5653
5654 /* rms: On a non-window display,
5655 the value of it.vpos at the bottom of the screen
5656 seems to be 1 larger than window_box_height (w).
5657 This kludge fixes a bug whereby (move-to-window-line -1)
5658 when ZV is on the last screen line
5659 moves to the previous screen line instead of the last one. */
5660 if (! FRAME_WINDOW_P (XFRAME (w->frame)))
5661 height++;
5662
5663 /* Add in empty lines at the bottom of the window. */ 5654 /* Add in empty lines at the bottom of the window. */
5664 if (bottom_y < height) 5655 if (bottom_y < height)
5665 { 5656 {
5666 int uy = FRAME_LINE_HEIGHT (it.f); 5657 int uy = FRAME_LINE_HEIGHT (it.f);
5667 it.vpos += (height - bottom_y + uy - 1) / uy; 5658 it.vpos += (height - bottom_y + uy - 1) / uy;
5668 } 5659 }
5660 else if (bottom_y == height)
5661 it.vpos++;
5669 5662
5670 if (old_buffer) 5663 if (old_buffer)
5671 set_buffer_internal (old_buffer); 5664 set_buffer_internal (old_buffer);
@@ -5940,7 +5933,12 @@ DEFUN ("move-to-window-line", Fmove_to_window_line, Smove_to_window_line,
5940 doc: /* Position point relative to window. 5933 doc: /* Position point relative to window.
5941ARG nil means position point at center of window. 5934ARG nil means position point at center of window.
5942Else, ARG specifies vertical position within the window; 5935Else, ARG specifies vertical position within the window;
5943zero means top of window, negative means relative to bottom of window. */) 5936zero means top of window, negative means relative to bottom
5937of window, -1 meaning the last fully visible display line
5938of the window.
5939
5940Value is the screen line of the window point moved to, counting
5941from the top of the window. */)
5944 (Lisp_Object arg) 5942 (Lisp_Object arg)
5945{ 5943{
5946 struct window *w = XWINDOW (selected_window); 5944 struct window *w = XWINDOW (selected_window);