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
--- 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,