]> git.eshelyaron.com Git - emacs.git/commitdiff
(compute_motion): Undo both May 7 changes.
authorRichard M. Stallman <rms@gnu.org>
Fri, 8 May 1998 02:28:22 +0000 (02:28 +0000)
committerRichard M. Stallman <rms@gnu.org>
Fri, 8 May 1998 02:28:22 +0000 (02:28 +0000)
src/indent.c

index 8f29b9cc24f8508227e2bce3a327087b977e4261..639cfdae818382de925fa2d9ee20d8a95b4255f4 100644 (file)
@@ -1223,9 +1223,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
        }
 
       /* Stop if past the target buffer position or screen position.  */
-      if (pos > to
-         || vpos > tovpos
-         || vpos == tovpos && tohpos >= 0 && hpos > tohpos)
+      if (pos > to)
        {
          /* Go back to the previous position.  */
          pos = prev_pos;
@@ -1258,6 +1256,24 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
          break;
        }
 
+      if (vpos > tovpos || vpos == tovpos && hpos >= tohpos)
+       {
+         if (contin_hpos && prev_hpos == 0
+             && ((hpos > tohpos && contin_hpos == width)
+                 || (wide_column_end_hpos > width)))
+           { /* Line breaks because we can't put the character at the
+                previous line any more.  It is not the multi-column
+                character continued in middle.  Go back to previous
+                buffer position, screen position, and set tab offset
+                to previous value.  It's the beginning of the
+                line.  */
+             pos = prev_pos;
+             pos_byte = prev_pos_byte;
+             hpos = prev_hpos;
+             tab_offset = prev_tab_offset;
+           }
+         break;
+       }
       if (pos == ZV) /* We cannot go beyond ZV.  Stop here. */
        break;