changeset 31680:24d9c23bf665 v9.0.1172

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 <Bram@vim.org> 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)
author Bram Moolenaar <Bram@vim.org>
date Tue, 10 Jan 2023 18:30:04 +0100
parents ba5b5ed7d62c
children fd9c778c9452
files src/normal.c src/testdir/test_visual.vim src/version.c
diffstat 3 files changed, 17 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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;
--- 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,
--- 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,