diff --git a/src/charset.c b/src/charset.c index 7da18bb2e4..e6657ce84c 100644 --- a/src/charset.c +++ b/src/charset.c @@ -1417,7 +1417,12 @@ getvcol_nolist(pos_T *posp) colnr_T vcol; curwin->w_p_list = FALSE; - getvcol(curwin, posp, NULL, &vcol, NULL); +#ifdef FEAT_VIRTUALEDIT + if (posp->coladd) + getvvcol(curwin, posp, NULL, &vcol, NULL); + else +#endif + getvcol(curwin, posp, NULL, &vcol, NULL); curwin->w_p_list = list_save; return vcol; } diff --git a/src/testdir/test_virtualedit.vim b/src/testdir/test_virtualedit.vim index 2b8849f488..d49025237b 100644 --- a/src/testdir/test_virtualedit.vim +++ b/src/testdir/test_virtualedit.vim @@ -38,6 +38,24 @@ func Test_paste_end_of_line() exe "normal! 2G$lllA\:normal! \"agP\r" call assert_equal('123456', getline(2)) + bwipe! + set virtualedit= +endfunc + +func Test_edit_CTRL_G() + new + set virtualedit=insert + call setline(1, ['123', '1', '12']) + exe "normal! ggA\jx\jx" + call assert_equal(['123', '1 x', '12 x'], getline(1,'$')) + + set virtualedit=all + %d_ + call setline(1, ['1', '12']) + exe "normal! ggllix\jx" + call assert_equal(['1 x', '12x'], getline(1,'$')) + + bwipe! set virtualedit= endfunc diff --git a/src/version.c b/src/version.c index f918ac284b..f80e22aff4 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 */ +/**/ + 1765, /**/ 1764, /**/