diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-11-02 15:44:14 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-11-02 15:44:14 +0100 |
commit | ffd99f729bd806e09d9355ede9c17780b61057bf (patch) | |
tree | da7d97abd95882da43082199094045864b49e26e /src | |
parent | 89c394faca40d2f5d57705432a433173b295bf73 (diff) |
patch 8.0.1242: function argument with only dash is seen as number zerov8.0.1242
Problem: Function argument with only dash is seen as number zero. (Wang
Shidong)
Solution: See a dash as a string. (Christian Brabandt)
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile | 1 | ||||
-rw-r--r-- | src/eval.c | 7 | ||||
-rw-r--r-- | src/testdir/test_ins_complete.vim | 19 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 28 insertions, 1 deletions
diff --git a/src/Makefile b/src/Makefile index 0b95c6ef78..92589560d1 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2189,6 +2189,7 @@ test_arglist \ test_hlsearch \ test_increment \ test_increment_dbcs \ + test_ins_complete \ test_job_fails \ test_join \ test_json \ diff --git a/src/eval.c b/src/eval.c index e8a1b0aa35..b3e2be5d0e 100644 --- a/src/eval.c +++ b/src/eval.c @@ -1056,8 +1056,13 @@ call_vim_function( if (str_arg_only) len = 0; else - /* Recognize a number argument, the others must be strings. */ + { + /* Recognize a number argument, the others must be strings. A dash + * is a string too. */ vim_str2nr(argv[i], NULL, &len, STR2NR_ALL, &n, NULL, 0); + if (len == 1 && *argv[i] == '-') + len = 0; + } if (len != 0 && len == (int)STRLEN(argv[i])) { argvars[i].v_type = VAR_NUMBER; diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim index bdad26a8c7..d25267ff4e 100644 --- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -90,3 +90,22 @@ func Test_ins_complete() call delete('Xtestdata') set cpt& cot& def& tags& tagbsearch& hidden& endfunc + +func Test_omni_dash() + func Omni(findstart, base) + if a:findstart + return 5 + else + echom a:base + return ['-help', '-v'] + endif + endfunc + set omnifunc=Omni + new + exe "normal Gofind -\<C-x>\<C-o>" + call assert_equal("\n-\nmatch 1 of 2", execute(':2mess')) + + bwipe! + delfunc Omni + set omnifunc= +endfunc diff --git a/src/version.c b/src/version.c index 2b5fb2d7ba..61e8ea2d0f 100644 --- a/src/version.c +++ b/src/version.c @@ -762,6 +762,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1242, +/**/ 1241, /**/ 1240, |