changeset 352:cd7ffb1fcb45

*** empty log message ***
author Jim Blandy <jimb@redhat.com>
date Thu, 25 Jul 1991 13:21:16 +0000
parents 5729b1cc3942
children 38d331b3a0b8
files src/dispnew.c
diffstat 1 files changed, 19 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/dispnew.c	Thu Jul 25 05:31:52 1991 +0000
+++ b/src/dispnew.c	Thu Jul 25 13:21:16 1991 +0000
@@ -534,8 +534,8 @@
 	}
       else
 	{
-	  /* Since the overlap is always less than SIZE, we can always
-	     safely do this loop once.  */
+	  /* Since TO - FROM >= 64, the overlap is less than SIZE,
+	     so we can always safely do this loop once.  */
 	  while (endt > to)
 	    {
 	      endt -= (to - from);
@@ -584,7 +584,7 @@
 }
 #endif
 
-/* Rotate a vector of SIZE bytes, by DISTANCE bytes.
+/* Rotate a vector of SIZE bytes right, by DISTANCE bytes.
    DISTANCE may be negative.  */
 
 static void
@@ -1248,20 +1248,31 @@
        in the buffer, or at the top of the window; both of these
        assure us that the character at bufp starts flush with the
        beginning of the line.  */
-    int i;
+    int start_line;
+
+#if 0
+    /* Unfortunately, the bufp array doesn't seem to be updated properly.  */
 
     /* Only works for the leftmost window on a line.  bufp is useless
        for the others.  */
     if (window_left == 0)
       {
-	for (i = line; i > XFASTINT (window->top); i--)
-	  if (FETCH_CHAR (bufp[i]-1) == '\n')
+	for (start_line = line; start_line > 0; start_line--)
+	  if (FETCH_CHAR (bufp[XFASTINT (window->top) + start_line]-1)
+	      == '\n')
 	    break;
+	posn = bufp[XFASTINT (window->top) + start_line];
+      }
+    else
+#endif
+      {
+	start_line = 0;
+	posn = Fmarker_position (window->start);
       }
 
     posn
-      = compute_motion (bufp[i], i, window_left,
-			ZV, col, line,
+      = compute_motion (posn, start_line, window_left,
+			ZV, line, col - window_left,
 			window_width, XINT (window->hscroll), 0)
 	->bufpos;
   }