aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/funcs.c
diff options
context:
space:
mode:
authorVVKot <volodymyr.kot.ua@gmail.com>2021-02-13 20:02:48 +0000
committerVVKot <volodymyr.kot.ua@gmail.com>2021-03-28 08:38:21 +0100
commit7fc58ec99a7546851d2a87b6548fd36d5d9c5abc (patch)
treee295de4e03277edc4b982a9bb420b7fa6c6b4a64 /src/nvim/eval/funcs.c
parentfacb1d897e67f3ed71de658854d34cf48f4a3b98 (diff)
downloadrneovim-7fc58ec99a7546851d2a87b6548fd36d5d9c5abc.tar.gz
rneovim-7fc58ec99a7546851d2a87b6548fd36d5d9c5abc.tar.bz2
rneovim-7fc58ec99a7546851d2a87b6548fd36d5d9c5abc.zip
vim-patch:8.1.0542: shiftwidth() does not take 'vartabstop' into account
Problem: shiftwidth() does not take 'vartabstop' into account. Solution: Use the cursor position or a position explicitly passed. Also make >> and << work better with 'vartabstop'. (Christian Brabandt) https://github.com/vim/vim/commit/f951416a8396a54bbbe21de1a8b16716428549f2
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r--src/nvim/eval/funcs.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c
index eeaaf7dbd1..0f2e904b1b 100644
--- a/src/nvim/eval/funcs.c
+++ b/src/nvim/eval/funcs.c
@@ -8849,6 +8849,18 @@ static void f_shellescape(typval_T *argvars, typval_T *rettv, FunPtr fptr)
*/
static void f_shiftwidth(typval_T *argvars, typval_T *rettv, FunPtr fptr)
{
+ rettv->vval.v_number = 0;
+
+ if (argvars[0].v_type != VAR_UNKNOWN) {
+ long col;
+
+ col = (long)tv_get_number_chk(argvars, NULL);
+ if (col < 0) {
+ return; // type error; errmsg already given
+ }
+ rettv->vval.v_number = get_sw_value_col(curbuf, col);
+ return;
+ }
rettv->vval.v_number = get_sw_value(curbuf);
}