diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2016-02-01 01:47:37 -0500 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2016-02-01 01:47:37 -0500 |
commit | 1d995bb35706c67b87280244fce6ebdcd2e7acb5 (patch) | |
tree | 48fb61734f6adf59ee0c38df1450358ad7ce47dd /src/nvim/eval.c | |
parent | 5ee87c68b792b4a704200b4e51ba948833b9cbfb (diff) | |
parent | 228d236bdfd85721840e7ea7935fe0060a65fa93 (diff) | |
download | rneovim-1d995bb35706c67b87280244fce6ebdcd2e7acb5.tar.gz rneovim-1d995bb35706c67b87280244fce6ebdcd2e7acb5.tar.bz2 rneovim-1d995bb35706c67b87280244fce6ebdcd2e7acb5.zip |
Merge pull request #4013 from watiko/vim-increment
Vim patches related to increment and marks
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index a1c5f958d1..b591c91147 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -1147,7 +1147,7 @@ int call_vim_function( len = 0; } else { // Recognize a number argument, the others must be strings. - vim_str2nr(argv[i], NULL, &len, true, true, true, &n, NULL); + vim_str2nr(argv[i], NULL, &len, STR2NR_ALL, &n, NULL, 0); } if (len != 0 && len == (int)STRLEN(argv[i])) { argvars[i].v_type = VAR_NUMBER; @@ -4138,7 +4138,7 @@ static int eval7( rettv->vval.v_float = f; } } else { - vim_str2nr(*arg, NULL, &len, true, true, true, &n, NULL); + vim_str2nr(*arg, NULL, &len, STR2NR_ALL, &n, NULL, 0); *arg += len; if (evaluate) { rettv->v_type = VAR_NUMBER; @@ -16037,6 +16037,7 @@ static void f_str2nr(typval_T *argvars, typval_T *rettv) int base = 10; char_u *p; long n; + int what; if (argvars[1].v_type != VAR_UNKNOWN) { base = get_tv_number(&argvars[1]); @@ -16050,11 +16051,20 @@ static void f_str2nr(typval_T *argvars, typval_T *rettv) if (*p == '+') { p = skipwhite(p + 1); } - vim_str2nr(p, NULL, NULL, - base == 2 ? 2 : 0, - base == 8 ? 2 : 0, - base == 16 ? 2 : 0, - &n, NULL); + switch (base) { + case 2: + what = STR2NR_BIN + STR2NR_FORCE; + break; + case 8: + what = STR2NR_OCT + STR2NR_FORCE; + break; + case 16: + what = STR2NR_HEX + STR2NR_FORCE; + break; + default: + what = 0; + } + vim_str2nr(p, NULL, NULL, what, &n, NULL, 0); rettv->vval.v_number = n; } @@ -18336,7 +18346,7 @@ long get_tv_number_chk(typval_T *varp, int *denote) case VAR_STRING: if (varp->vval.v_string != NULL) { vim_str2nr(varp->vval.v_string, NULL, NULL, - true, true, true, &n, NULL); + STR2NR_ALL, &n, NULL, 0); } return n; case VAR_LIST: |