changeset 12728:9c1659761fc3 v8.0.1242

patch 8.0.1242: function argument with only dash is seen as number zero commit https://github.com/vim/vim/commit/ffd99f729bd806e09d9355ede9c17780b61057bf Author: Bram Moolenaar <Bram@vim.org> Date: Thu Nov 2 15:44:14 2017 +0100 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)
author Christian Brabandt <cb@256bit.org>
date Thu, 02 Nov 2017 15:45:06 +0100
parents ed7e40447153
children 5a51910c373a
files src/Makefile src/eval.c src/testdir/test_ins_complete.vim src/version.c
diffstat 4 files changed, 28 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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 \
--- 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;
--- 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
--- 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,