patch 8.2.2695: cursor position reset with nested autocommands
Problem: Cursor position reset with nested autocommands.
Solution: Only check and reset line numbers for not nested autocommands.
(closes #5820)
diff --git a/src/autocmd.c b/src/autocmd.c
index ede8e7d..4c12e72 100644
--- a/src/autocmd.c
+++ b/src/autocmd.c
@@ -2116,14 +2116,16 @@
ap->last = FALSE;
ap->last = TRUE;
- // make sure cursor and topline are valid
- check_lnums(TRUE);
+ if (nesting == 1)
+ // make sure cursor and topline are valid
+ check_lnums(TRUE);
do_cmdline(NULL, getnextac, (void *)&patcmd,
DOCMD_NOWAIT|DOCMD_VERBOSE|DOCMD_REPEAT);
- // restore cursor and topline, unless they were changed
- reset_lnums();
+ if (nesting == 1)
+ // restore cursor and topline, unless they were changed
+ reset_lnums();
#ifdef FEAT_EVAL
if (eap != NULL)