emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r100619: Fix occasional recentering u


From: Eli Zaretskii
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r100619: Fix occasional recentering under scroll-conservatively.
Date: Sat, 19 Jun 2010 12:40:15 +0300
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 100619
committer: Eli Zaretskii <address@hidden>
branch nick: trunk
timestamp: Sat 2010-06-19 12:40:15 +0300
message:
  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.
modified:
  src/ChangeLog
  src/xdisp.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2010-06-16 20:08:41 +0000
+++ b/src/ChangeLog     2010-06-19 09:40:15 +0000
@@ -1,3 +1,13 @@
+2010-06-19  Eli Zaretskii  <address@hidden>
+
+       * 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  <address@hidden>
 
        * editfns.c (Fbyte_to_string): Pacify compiler.

=== modified file 'src/xdisp.c'
--- a/src/xdisp.c       2010-06-01 02:34:49 +0000
+++ b/src/xdisp.c       2010-06-19 09:40:15 +0000
@@ -13431,14 +13431,19 @@
       if (PT > CHARPOS (it.current.pos))
        {
          int y0 = line_bottom_y (&it);
+         /* 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
-            (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 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;
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]