Commit ad5a12b5 authored by Eli Zaretskii's avatar Eli Zaretskii

Fix occasional recentering under scroll-conservatively.

 xdisp.c (try_scrolling): Compute the limit for searching point
 in forward scroll from scroll_max, instead of an arbitrary limit
 of 10 screen lines.  See
 http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00766.html and
 http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00773.html for
 details.
parent d148e8f9
2010-06-19 Eli Zaretskii <eliz@gnu.org>
* xdisp.c (try_scrolling): Compute the limit for searching point
in forward scroll from scroll_max, instead of an arbitrary limit
of 10 screen lines. See
http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00766.html
and
http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00773.html
for details.
2010-06-16 Glenn Morris <rgm@gnu.org>
* editfns.c (Fbyte_to_string): Pacify compiler.
......
......@@ -13431,14 +13431,19 @@ try_scrolling (window, just_this_one_p, scroll_conservatively,
if (PT > CHARPOS (it.current.pos))
{
int y0 = line_bottom_y (&it);
/* Compute the distance from the scroll margin to PT
(including the height of the cursor line). Moving the
iterator unconditionally to PT can be slow if PT is far
away, so stop 10 lines past the window bottom (is there a
way to do the right thing quickly?). */
/* Compute how many pixels below window bottom to stop searching
for PT. This avoids costly search for PT that is far away if
the user limited scrolling by a small number of lines, but
always finds PT if scroll_conservatively is set to a large
number, such as most-positive-fixnum. */
int slack = min (scroll_max, 10 * FRAME_LINE_HEIGHT (f));
/* Compute the distance from the scroll margin to PT or to
the scroll limit, whichever comes first. This should
include the height of the cursor line, to make that line
fully visible. */
move_it_to (&it, PT, -1,
it.last_visible_y + 10 * FRAME_LINE_HEIGHT (f),
it.last_visible_y + slack,
-1, MOVE_TO_POS | MOVE_TO_Y);
dy = line_bottom_y (&it) - y0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment