diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-02-12 21:25:44 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2022-02-12 21:30:28 +0800 |
commit | ed169d89979caf8e67dbdf74491367d2e0cfad58 (patch) | |
tree | 7fef19702b66f9837a13e9030033b9ed90d0e8ac /src/nvim/eval | |
parent | a1f34b248106619f861dcc186c1adf8053f572d7 (diff) | |
download | rneovim-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.c | 4 |
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 { |