Mercurial > emacs
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; }