patch 8.0.1242: function argument with only dash is seen as number zero

Problem:    Function argument with only dash is seen as number zero. (Wang
            Shidong)
Solution:   See a dash as a string. (Christian Brabandt)
diff --git a/src/Makefile b/src/Makefile
index 0b95c6e..9258956 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -2189,6 +2189,7 @@
 	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 e8a1b0a..b3e2be5 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1056,8 +1056,13 @@
 	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 bdad26a..d25267f 100644
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -90,3 +90,22 @@
   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 2b5fb2d..61e8ea2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1242,
+/**/
     1241,
 /**/
     1240,