diff --git a/src/ex_getln.c b/src/ex_getln.c index af4dc19be198a..b499aba141b67 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -1206,6 +1206,7 @@ cmdline_insert_reg(int *gotesc UNUSED) { int i; int c; + int save_new_cmdpos = new_cmdpos; #ifdef USE_ON_FLY_SCROLL dont_scroll = TRUE; // disallow scrolling here @@ -1224,8 +1225,6 @@ cmdline_insert_reg(int *gotesc UNUSED) #ifdef FEAT_EVAL /* * Insert the result of an expression. - * Need to save the current command line, to be able to enter - * a new one... */ new_cmdpos = -1; if (c == '=') @@ -1266,6 +1265,8 @@ cmdline_insert_reg(int *gotesc UNUSED) } #endif } + new_cmdpos = save_new_cmdpos; + // remove the double quote redrawcmd(); diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index 2289c343e9f82..9c08d138042ab 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -1987,6 +1987,11 @@ func Test_cmdline_expr() call assert_equal("\"e \\", @:) endfunc +" This was making the insert position negative +func Test_cmdline_expr_register() + exe "sil! norm! ?\e0\0\?\e0\" +endfunc + " Test for 'imcmdline' and 'imsearch' " This test doesn't actually test the input method functionality. func Test_cmdline_inputmethod() diff --git a/src/version.c b/src/version.c index 35024fb59405f..e567a3a9995ab 100644 --- a/src/version.c +++ b/src/version.c @@ -734,6 +734,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 5148, /**/ 5147, /**/