From adb8fbec4f4059d214fe6acf2485ffd35e803450 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 4 Jun 2018 20:34:23 +0200 Subject: patch 8.1.0034: cursor not restored with ":edit #" Problem: Cursor not restored with ":edit #". Solution: Don't assume autocommands moved the cursor when it was moved to the first non-blank. --- src/ex_cmds.c | 13 ++++++++++--- src/testdir/test_edit.vim | 14 ++++++++++++++ src/version.c | 2 ++ 3 files changed, 26 insertions(+), 3 deletions(-) (limited to 'src') 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; diff --git a/src/testdir/test_edit.vim b/src/testdir/test_edit.vim index 7278bcd85d..3af8c4c880 100644 --- a/src/testdir/test_edit.vim +++ b/src/testdir/test_edit.vim @@ -1387,3 +1387,17 @@ func Test_edit_quit() only endfunc +func Test_edit_alt() + " Keeping the cursor line didn't happen when the first line has indent. + new + call setline(1, [' one', 'two', 'three']) + w XAltFile + $ + call assert_equal(3, line('.')) + e Xother + e # + call assert_equal(3, line('.')) + + bwipe XAltFile + call delete('XAltFile') +endfunc diff --git a/src/version.c b/src/version.c index 52269e7e84..a3f5c052fe 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 34, /**/ 33, /**/ -- cgit v1.2.3