Mercurial > vim
changeset 13786:0fa21ba32e21 v8.0.1765
patch 8.0.1765: CTRL-G j in Insert mode is incorrect when 'virtualedit' set
commit https://github.com/vim/vim/commit/db0eedec16621854c772760d02427804bc0a298d
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Apr 25 22:38:17 2018 +0200
patch 8.0.1765: CTRL-G j in Insert mode is incorrect when 'virtualedit' set
Problem: CTRL-G j in Insert mode is incorrect when 'virtualedit' is set.
Solution: Take coladd into account. (Christian Brabandt, closes https://github.com/vim/vim/issues/2743)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 25 Apr 2018 22:45:06 +0200 |
parents | 27fa9e0032c4 |
children | 458d0b50ba95 |
files | src/charset.c src/testdir/test_virtualedit.vim src/version.c |
diffstat | 3 files changed, 26 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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; }
--- 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