]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fvertical_motion): Move to the start of the line
authorEli Zaretskii <eliz@gnu.org>
Fri, 3 May 2002 10:17:41 +0000 (10:17 +0000)
committerEli Zaretskii <eliz@gnu.org>
Fri, 3 May 2002 10:17:41 +0000 (10:17 +0000)
containing PT before moving up or down.

src/indent.c

index 80fc4a6739d6a73e6cfa2bc883a8a0dba983e5d2..33a6c5b63db75f082910c4ab9e87e63cdd92fc82 100644 (file)
@@ -2000,15 +2000,24 @@ whether or not it is currently displayed in some window.")
       old_buffer = w->buffer;
       XSETBUFFER (w->buffer, current_buffer);
     }
-      
+
   SET_TEXT_POS (pt, PT, PT_BYTE);
   start_display (&it, w, pt);
-  move_it_by_lines (&it, XINT (lines), 0);
+
+  /* Move to the start of the line containing PT.  If we don't do
+     this, we start moving with IT->current_x == 0, while PT is really
+     at some x > 0.  The effect is, in continuation lines, that we end
+     up with the iterator placed at where it thinks X is 0, while the
+     end position is really at some X > 0, the same X that PT had.  */
+  move_it_by_lines (&it, 0, 0);
+  if (XINT (lines) != 0)
+    move_it_by_lines (&it, XINT (lines), 0);
+
   SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it));
 
   if (BUFFERP (old_buffer))
     w->buffer = old_buffer;
-  
+
   RETURN_UNGCPRO (make_number (it.vpos));
 }