summaryrefslogtreecommitdiffstats
path: root/src/ex_cmds.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ex_cmds.c')
-rw-r--r--src/ex_cmds.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 111fe01d22..60d72023c9 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -4193,11 +4193,18 @@ do_ecmd(
check_arg_idx(curwin);
/* If autocommands change the cursor position or topline, we should
- * keep it. Also when it moves within a line. */
+ * keep it. Also when it moves within a line. But not when it moves
+ * to the first non-blank. */
if (!EQUAL_POS(curwin->w_cursor, orig_pos))
{
- newlnum = curwin->w_cursor.lnum;
- newcol = curwin->w_cursor.col;
+ char_u *text = ml_get_curline();
+
+ if (curwin->w_cursor.lnum != orig_pos.lnum
+ || curwin->w_cursor.col != (int)(skipwhite(text) - text))
+ {
+ newlnum = curwin->w_cursor.lnum;
+ newcol = curwin->w_cursor.col;
+ }
}
if (curwin->w_topline == topline)
topline = 0;