aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/normal.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-02-02 08:05:15 +0800
committerGitHub <noreply@github.com>2023-02-02 08:05:15 +0800
commitfa35d3c33a74123a3a3374566652161d3ad6ee5c (patch)
tree7bbd9cffbeb622c31a729d3905ad9aa8ba5e62c9 /src/nvim/normal.c
parent9ce44a750c2a65082962effe6ce4d185b7698d73 (diff)
downloadrneovim-fa35d3c33a74123a3a3374566652161d3ad6ee5c.tar.gz
rneovim-fa35d3c33a74123a3a3374566652161d3ad6ee5c.tar.bz2
rneovim-fa35d3c33a74123a3a3374566652161d3ad6ee5c.zip
vim-patch:9.0.1273: "1v" may select block with wrong size (#22092)
Problem: "1v" may select block with wrong size. (Evgeni Chasnovski) Solution: Compute "curswant" in the right line. (closes vim/vim#11925) https://github.com/vim/vim/commit/8f531662e28c37560bf5ac20a059bf00d01ee5a4 Co-authored-by: Bram Moolenaar <Bram@vim.org>
Diffstat (limited to 'src/nvim/normal.c')
-rw-r--r--src/nvim/normal.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/nvim/normal.c b/src/nvim/normal.c
index 58a18ca5a8..b88cfb8926 100644
--- a/src/nvim/normal.c
+++ b/src/nvim/normal.c
@@ -5072,9 +5072,13 @@ static void nv_visual(cmdarg_T *cap)
curwin->w_curswant = MAXCOL;
coladvance(MAXCOL);
} else if (VIsual_mode == Ctrl_V) {
+ // Update curswant on the original line, that is where "col" is valid.
+ linenr_T lnum = curwin->w_cursor.lnum;
+ curwin->w_cursor.lnum = VIsual.lnum;
update_curswant_force();
assert(cap->count0 >= INT_MIN && cap->count0 <= INT_MAX);
curwin->w_curswant += resel_VIsual_vcol * (int)cap->count0 - 1;
+ curwin->w_cursor.lnum = lnum;
coladvance(curwin->w_curswant);
} else {
curwin->w_set_curswant = true;