Permalink
Browse files

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.
  • Loading branch information...
brammool committed Jun 4, 2018
1 parent acb9eff commit adb8fbec4f4059d214fe6acf2485ffd35e803450
Showing with 26 additions and 3 deletions.
  1. +10 −3 src/ex_cmds.c
  2. +14 −0 src/testdir/test_edit.vim
  3. +2 −0 src/version.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;
@@ -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
@@ -761,6 +761,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
34,
/**/
33,
/**/

0 comments on commit adb8fbe

Please sign in to comment.