# HG changeset patch # User Stefan Monnier # Date 974227087 0 # Node ID b714a06b99ec6346397940f710cab5619e9be8ac # Parent 6e67bfbf2facaf5c17707c519e782436969f570c (try_scrolling): Set scroll_max to max of scroll_* args so setting scroll-step to 1 doesn't defeat scroll-conservatively. Set amount_to_scroll to max of dx and scroll_step so that scroll-conservatively doesn't defeat scroll-step>1. (syms_of_xdisp): Add a hint in scroll-step's docstring to use scroll-conservatively for line-at-a-time scrolling. diff -r 6e67bfbf2fac -r b714a06b99ec src/xdisp.c --- a/src/xdisp.c Tue Nov 14 18:23:05 2000 +0000 +++ b/src/xdisp.c Tue Nov 14 18:38:07 2000 +0000 @@ -8775,12 +8775,9 @@ /* Compute how much we should try to scroll maximally to bring point into view. */ - if (scroll_step) - scroll_max = scroll_step; - else if (scroll_conservatively) - scroll_max = scroll_conservatively; - else if (temp_scroll_step) - scroll_max = temp_scroll_step; + if (scroll_step || scroll_conservatively || temp_scroll_step) + scroll_max = max (scroll_step, + max (scroll_conservatively, temp_scroll_step)); else if (NUMBERP (current_buffer->scroll_down_aggressively) || NUMBERP (current_buffer->scroll_up_aggressively)) /* We're trying to scroll because of aggressive scrolling @@ -8843,7 +8840,8 @@ start_display (&it, w, startp); if (scroll_conservatively) - amount_to_scroll = dy; + amount_to_scroll = + max (dy, CANON_Y_UNIT (f) * max (scroll_step, temp_scroll_step)); else if (scroll_step || temp_scroll_step) amount_to_scroll = scroll_max; else @@ -8896,7 +8894,8 @@ start_display (&it, w, startp); if (scroll_conservatively) - amount_to_scroll = dy; + amount_to_scroll = + max (dy, CANON_Y_UNIT (f) * max (scroll_step, temp_scroll_step)); else if (scroll_step || temp_scroll_step) amount_to_scroll = scroll_max; else @@ -13766,7 +13765,9 @@ DEFVAR_INT ("scroll-step", &scroll_step, "*The number of lines to try scrolling a window by when point moves out.\n\ If that fails to bring point back on frame, point is centered instead.\n\ -If this is zero, point is always centered after it moves off frame."); +If this is zero, point is always centered after it moves off frame.\n\ +If you want scrolling to always be a line at a time, you should set\n\ + `scroll-conservatively' to a large value rather than set this to 1."); DEFVAR_INT ("scroll-conservatively", &scroll_conservatively, "*Scroll up to this many lines, to bring point back on screen.\n\