# HG changeset patch # User Bram Moolenaar # Date 1673371804 -3600 # Node ID 24d9c23bf66530dc79e6a945eb815fb4c52e567a # Parent ba5b5ed7d62ca79b3d8f7e1b45498ab3801e3435 patch 9.0.1172: when 'selection' is "exclusive" then "1v" is one char short Commit: https://github.com/vim/vim/commit/79c11e399be3d96ed6d1c7458b1380e878ec717b Author: Bram Moolenaar Date: Tue Jan 10 17:29:29 2023 +0000 patch 9.0.1172: when 'selection' is "exclusive" then "1v" is one char short Problem: When 'selection' is "exclusive" then "1v" is one char short. Solution: Add one character when 'selection' is "exclusive. (closes https://github.com/vim/vim/issues/11791) diff --git a/src/normal.c b/src/normal.c --- a/src/normal.c +++ b/src/normal.c @@ -5472,7 +5472,9 @@ nv_visual(cmdarg_T *cap) if (resel_VIsual_line_count <= 1) { update_curswant_force(); - curwin->w_curswant += resel_VIsual_vcol * cap->count0 - 1; + curwin->w_curswant += resel_VIsual_vcol * cap->count0; + if (*p_sel != 'e') + --curwin->w_curswant; } else curwin->w_curswant = resel_VIsual_vcol; diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim --- a/src/testdir/test_visual.vim +++ b/src/testdir/test_visual.vim @@ -1336,6 +1336,18 @@ func Test_visual_reselect_with_count() bwipe! endfunc +func Test_visual_reselect_exclusive() + new + call setline(1, ['abcde', 'abcde']) + set selection=exclusive + normal 1G0viwd + normal 2G01vd + call assert_equal(['', ''], getline(1, 2)) + + set selection& + bwipe! +endfunc + func Test_visual_block_insert_round_off() new " The number of characters are tuned to fill a 4096 byte allocated block, diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1172, +/**/ 1171, /**/ 1170,