]> git.eshelyaron.com Git - emacs.git/commitdiff
(compute_motion): When POS >= TO, don't call
authorKenichi Handa <handa@m17n.org>
Wed, 5 Mar 1997 01:42:06 +0000 (01:42 +0000)
committerKenichi Handa <handa@m17n.org>
Wed, 5 Mar 1997 01:42:06 +0000 (01:42 +0000)
find_before_next_newline() as it assumes POS < TO.

src/indent.c

index ea0de2a10d6382741fcf431f7d24323515a3cc6a..507b8e36cbef5d6c1b47029ac88b5fdd52d399c9 100644 (file)
@@ -1261,21 +1261,26 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
            {
              if (selective > 0 && indented_beyond_p (pos, selective))
                {
-                 /* Skip any number of invisible lines all at once */
-                 do
-                   pos = find_before_next_newline (pos, to, 1) + 1;
-                 while (pos < to
-                        && indented_beyond_p (pos, selective));
-                 /* Allow for the " ..." that is displayed for them. */
-                 if (selective_rlen)
+                 /* If (pos == to), we don't have to take care of
+                   selective display.  */
+                 if (pos < to)
                    {
-                     hpos += selective_rlen;
-                     if (hpos >= width)
-                       hpos = width;
+                     /* Skip any number of invisible lines all at once */
+                     do
+                       pos = find_before_next_newline (pos, to, 1) + 1;
+                     while (pos < to
+                            && indented_beyond_p (pos, selective));
+                     /* Allow for the " ..." that is displayed for them. */
+                     if (selective_rlen)
+                       {
+                         hpos += selective_rlen;
+                         if (hpos >= width)
+                           hpos = width;
+                       }
+                     --pos;
+                     /* We have skipped the invis text, but not the
+                       newline after.  */
                    }
-                 --pos;
-                 /* We have skipped the invis text, but not the
-                    newline after.  */
                }
              else
                {
@@ -1295,7 +1300,8 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
              /* In selective display mode,
                 everything from a ^M to the end of the line is invisible.
                 Stop *before* the real newline.  */
-             pos = find_before_next_newline (pos, to, 1);
+             if (pos < to)
+               pos = find_before_next_newline (pos, to, 1);
              /* If we just skipped next_boundary,
                 loop around in the main while
                 and handle it.  */