(Fmove_to_column): When ending within a tab, insert
spaces first so that markers at the end of the tab get adjusted.
This commit is contained in:
parent
9ab8560dc2
commit
154a424ac4
1 changed files with 13 additions and 6 deletions
19
src/indent.c
19
src/indent.c
|
@ -944,14 +944,21 @@ The return value is the current column.")
|
|||
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;
|
||||
|
||||
del_range (PT - 1, PT);
|
||||
Findent_to (make_number (goal), Qnil);
|
||||
old_point = PT;
|
||||
old_point_byte = 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);
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue