diff options
author | Bram Moolenaar <Bram@vim.org> | 2018-04-25 22:38:17 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2018-04-25 22:38:17 +0200 |
commit | db0eedec16621854c772760d02427804bc0a298d (patch) | |
tree | e1830c042aa1be1a3292a550a000e39025db43cd | |
parent | 856905bd838fdf71be2c3dabc98453b85b80a83b (diff) | |
download | vim-git-db0eedec16621854c772760d02427804bc0a298d.tar.gz |
patch 8.0.1765: CTRL-G j in Insert mode is incorrect when 'virtualedit' setv8.0.1765
Problem: CTRL-G j in Insert mode is incorrect when 'virtualedit' is set.
Solution: Take coladd into account. (Christian Brabandt, closes #2743)
-rw-r--r-- | src/charset.c | 7 | ||||
-rw-r--r-- | src/testdir/test_virtualedit.vim | 18 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 26 insertions, 1 deletions
diff --git a/src/charset.c b/src/charset.c index 7da18bb2e..e6657ce84 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 2b8849f48..d49025237 100644 --- a/src/testdir/test_virtualedit.vim +++ b/src/testdir/test_virtualedit.vim @@ -41,3 +41,21 @@ func Test_paste_end_of_line() bwipe! set virtualedit= endfunc + +func Test_edit_CTRL_G() + new + set virtualedit=insert + call setline(1, ['123', '1', '12']) + exe "normal! ggA\<c-g>jx\<c-g>jx" + call assert_equal(['123', '1 x', '12 x'], getline(1,'$')) + + set virtualedit=all + %d_ + call setline(1, ['1', '12']) + exe "normal! ggllix\<c-g>jx" + call assert_equal(['1 x', '12x'], getline(1,'$')) + + + bwipe! + set virtualedit= +endfunc diff --git a/src/version.c b/src/version.c index f918ac284..f80e22aff 100644 --- a/src/version.c +++ b/src/version.c @@ -762,6 +762,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1765, +/**/ 1764, /**/ 1763, |