summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-04-25 22:38:17 +0200
committerBram Moolenaar <Bram@vim.org>2018-04-25 22:38:17 +0200
commitdb0eedec16621854c772760d02427804bc0a298d (patch)
treee1830c042aa1be1a3292a550a000e39025db43cd /src
parent856905bd838fdf71be2c3dabc98453b85b80a83b (diff)
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)
Diffstat (limited to 'src')
-rw-r--r--src/charset.c7
-rw-r--r--src/testdir/test_virtualedit.vim18
-rw-r--r--src/version.c2
3 files changed, 26 insertions, 1 deletions
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
@@ -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 f918ac284b..f80e22aff4 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,