]> code.delx.au - gnu-emacs/commitdiff
(Fvertical_motion): Move to the start of the line
authorGerd Moellmann <gerd@gnu.org>
Thu, 25 Apr 2002 10:39:57 +0000 (10:39 +0000)
committerGerd Moellmann <gerd@gnu.org>
Thu, 25 Apr 2002 10:39:57 +0000 (10:39 +0000)
containing PT before moving up or down.

src/ChangeLog
src/indent.c

index 7e28431348c9a7a5d84adc954e4c2cd6b259c98a..f0549637b6f7cccf98720151878b8e07a43346ff 100644 (file)
@@ -1,3 +1,8 @@
+2002-04-25  Gerd Moellmann  <gerd@gnu.org>
+
+       * indent.c (Fvertical_motion): Move to the start of the line
+       containing PT before moving up or down.
+
 2002-04-24  Gerd Moellmann  <gerd@gnu.org>
 
        * dispnew.c (update_text_area): Set phys_cursor_on_p to 0 in the
index 437875f34da525a0bed35b9fe4bc40af22f45039..e2f680760756cdd699638578c494d268f0167677 100644 (file)
@@ -1,5 +1,5 @@
 /* Indentation functions.
-   Copyright (C) 1985,86,87,88,93,94,95,98, 2000, 2001
+   Copyright (C) 1985,86,87,88,93,94,95,98, 2000, 2001, 2002
    Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
@@ -2018,7 +2018,17 @@ whether or not it is currently displayed in some window.  */)
       
   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))