aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-02-12 21:25:44 +0800
committerzeertzjq <zeertzjq@outlook.com>2022-02-12 21:30:28 +0800
commited169d89979caf8e67dbdf74491367d2e0cfad58 (patch)
tree7fef19702b66f9837a13e9030033b9ed90d0e8ac /src/nvim/eval
parenta1f34b248106619f861dcc186c1adf8053f572d7 (diff)
downloadrneovim-ed169d89979caf8e67dbdf74491367d2e0cfad58.tar.gz
rneovim-ed169d89979caf8e67dbdf74491367d2e0cfad58.tar.bz2
rneovim-ed169d89979caf8e67dbdf74491367d2e0cfad58.zip
vim-patch:8.2.2342: "char" functions may return wrong column in Insert mode
Problem: "char" functions return the wront column in Insert mode when the cursor is beyond the end of the line. Solution: Compute the column correctly. (Yegappan Lakshmanan, closes vim/vim#7669) https://github.com/vim/vim/commit/9145846b6aa411e3ab5c0d145b37808654352877
Diffstat (limited to 'src/nvim/eval')
-rw-r--r--src/nvim/eval/funcs.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c
index 8beacc9988..7772d9ffc2 100644
--- a/src/nvim/eval/funcs.c
+++ b/src/nvim/eval/funcs.c
@@ -1588,7 +1588,7 @@ static void set_cursorpos(typval_T *argvars, typval_T *rettv, bool charcol)
line = tv_get_lnum(argvars);
col = (long)tv_get_number_chk(&argvars[1], NULL);
if (charcol) {
- col = buf_charidx_to_byteidx(curbuf, line, col);
+ col = buf_charidx_to_byteidx(curbuf, line, col) + 1;
}
if (argvars[2].v_type != VAR_UNKNOWN) {
coladd = (long)tv_get_number_chk(&argvars[2], NULL);
@@ -3327,7 +3327,7 @@ static void getpos_both(typval_T *argvars, typval_T *rettv, bool getcurpos, bool
}
if (fp != NULL && charcol) {
pos = *fp;
- pos.col = buf_byteidx_to_charidx(wp->w_buffer, pos.lnum, pos.col) - 1;
+ pos.col = buf_byteidx_to_charidx(wp->w_buffer, pos.lnum, pos.col);
fp = &pos;
}
} else {