]> granicus.if.org Git - vim/commitdiff
patch 8.0.1765: CTRL-G j in Insert mode is incorrect when 'virtualedit' set v8.0.1765
authorBram Moolenaar <Bram@vim.org>
Wed, 25 Apr 2018 20:38:17 +0000 (22:38 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 25 Apr 2018 20:38:17 +0000 (22:38 +0200)
Problem:    CTRL-G j in Insert mode is incorrect when 'virtualedit' is set.
Solution:   Take coladd into account. (Christian Brabandt, closes #2743)

src/charset.c
src/testdir/test_virtualedit.vim
src/version.c

index 7da18bb2e471a109d556ad5066bf899e58778287..e6657ce84c7037c128342f2d1c390e4644bb7216 100644 (file)
@@ -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;
 }
index 2b8849f488f33dd62f31f5f145f4863ff0f863bf..d49025237b7ef2b1e0536d1970d2c6512deb8107 100644 (file)
@@ -38,6 +38,24 @@ func Test_paste_end_of_line()
   exe "normal! 2G$lllA\<C-O>: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\<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
index f918ac284b8c2fc1a5693f97044f2b15f7f7cca0..f80e22aff4804d20a41d746f50eff320c8588756 100644 (file)
@@ -761,6 +761,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1765,
 /**/
     1764,
 /**/