summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-11-02 15:44:14 +0100
committerBram Moolenaar <Bram@vim.org>2017-11-02 15:44:14 +0100
commitffd99f729bd806e09d9355ede9c17780b61057bf (patch)
treeda7d97abd95882da43082199094045864b49e26e /src
parent89c394faca40d2f5d57705432a433173b295bf73 (diff)
downloadvim-git-ffd99f729bd806e09d9355ede9c17780b61057bf.tar.gz
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/Makefile1
-rw-r--r--src/eval.c7
-rw-r--r--src/testdir/test_ins_complete.vim19
-rw-r--r--src/version.c2
4 files changed, 28 insertions, 1 deletions
diff --git a/src/Makefile b/src/Makefile
index 0b95c6ef7..92589560d 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 e8a1b0aa3..b3e2be5d0 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 bdad26a8c..d25267ff4 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 2b5fb2d7b..61e8ea2d0 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,