mirror of
https://github.com/vim/vim.git
synced 2025-07-04 23:07:33 -04:00
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.
This commit is contained in:
parent
acb9effecc
commit
adb8fbec4f
@ -4193,11 +4193,18 @@ do_ecmd(
|
|||||||
check_arg_idx(curwin);
|
check_arg_idx(curwin);
|
||||||
|
|
||||||
/* If autocommands change the cursor position or topline, we should
|
/* 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))
|
if (!EQUAL_POS(curwin->w_cursor, orig_pos))
|
||||||
{
|
{
|
||||||
newlnum = curwin->w_cursor.lnum;
|
char_u *text = ml_get_curline();
|
||||||
newcol = curwin->w_cursor.col;
|
|
||||||
|
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)
|
if (curwin->w_topline == topline)
|
||||||
topline = 0;
|
topline = 0;
|
||||||
|
@ -1387,3 +1387,17 @@ func Test_edit_quit()
|
|||||||
only
|
only
|
||||||
endfunc
|
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[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
34,
|
||||||
/**/
|
/**/
|
||||||
33,
|
33,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user