changeset 28933:bb0cf4868e70

(Fmove_to_column): When ending within a tab, insert spaces first so that markers at the end of the tab get adjusted.
author Gerd Moellmann <gerd@gnu.org>
date Tue, 16 May 2000 14:29:27 +0000
parents f8b0ac62f238
children aa8fa04a3e1c
files src/indent.c
diffstat 1 files changed, 13 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/indent.c	Tue May 16 14:29:08 2000 +0000
+++ b/src/indent.c	Tue May 16 14:29:27 2000 +0000
@@ -944,14 +944,21 @@
      and scan through it again.  */
   if (!NILP (force) && col > goal && c == '\t' && prev_col < goal)
     {
-      int old_point, old_point_byte;
+      int goal_pt, goal_pt_byte;
+
+      /* Insert spaces in front of the tab to reach GOAL.  Do this
+	 first so that a marker at the end of the tab gets
+	 adjusted.  */
+      SET_PT_BOTH (PT - 1, PT_BYTE - 1);
+      Finsert_char (make_number (' '), make_number (goal - prev_col), Qt);
 
-      del_range (PT - 1, PT);
-      Findent_to (make_number (goal), Qnil);
-      old_point = PT;
-      old_point_byte = PT_BYTE;
+      /* Now delete the tab, and indent to COL.  */
+      del_range (PT, PT + 1);
+      goal_pt = PT;
+      goal_pt_byte = PT_BYTE;
       Findent_to (make_number (col), Qnil);
-      SET_PT_BOTH (old_point, old_point_byte);
+      SET_PT_BOTH (goal_pt, goal_pt_byte);
+      
       /* Set the last_known... vars consistently.  */
       col = goal;
     }