]> granicus.if.org Git - vim/commitdiff
patch 8.0.1242: function argument with only dash is seen as number zero v8.0.1242
authorBram Moolenaar <Bram@vim.org>
Thu, 2 Nov 2017 14:44:14 +0000 (15:44 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 2 Nov 2017 14:44:14 +0000 (15:44 +0100)
Problem:    Function argument with only dash is seen as number zero. (Wang
            Shidong)
Solution:   See a dash as a string. (Christian Brabandt)

src/Makefile
src/eval.c
src/testdir/test_ins_complete.vim
src/version.c

index 0b95c6ef780a266902a357cc401c248dcaae098c..92589560d126c267cd90cabbd0f9d15d3207032a 100644 (file)
@@ -2189,6 +2189,7 @@ test_arglist \
        test_hlsearch \
        test_increment \
        test_increment_dbcs \
+       test_ins_complete \
        test_job_fails \
        test_join \
        test_json \
index e8a1b0aa35425dfce1c47f558de6d14cc2c75e8a..b3e2be5d0e396cd3123467dc2709fac6803f02da 100644 (file)
@@ -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;
index bdad26a8c76c3345620800aa9fc2094e613d6251..d25267ff4e0ec5b238c98234f71edfb87da31c42 100644 (file)
@@ -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
index 2b5fb2d7bac196399112a1f183fbe85780649c90..61e8ea2d0f4b71efa7097f339a74a2dae17d3044 100644 (file)
@@ -761,6 +761,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1242,
 /**/
     1241,
 /**/