patch 8.2.4741: startup test fails v8.2.4741
authorBram Moolenaar <Bram@vim.org>
Tue, 12 Apr 2022 13:23:19 +0000 (14:23 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 12 Apr 2022 13:23:19 +0000 (14:23 +0100)
Problem:    Startup test fails.
Solution:   Avoid an error for verbose expansion.  Fix that the "0verbose"
            command modifier doesn't work.

runtime/syntax/synload.vim
runtime/syntax/syntax.vim
src/ex_docmd.c
src/structs.h
src/testdir/test_excmd.vim
src/version.c

index f373161c7c8cc07361bf493e78a648b4f410078d..728b653d8e5924b8aadff50ec4845ecfaae13300 100644 (file)
@@ -37,7 +37,7 @@ fun! s:SynSet()
     unlet b:current_syntax
   endif
 
-  let s = expand("<amatch>")
+  0verbose let s = expand("<amatch>")
   if s == "ON"
     " :set syntax=ON
     if &filetype == ""
index f274d93f4f7954bc22f9ac065335e4c53df648fd..4cb02887a1ccf29072207962143c7cef421931ed 100644 (file)
@@ -28,8 +28,9 @@ endif
 
 " Set up the connection between FileType and Syntax autocommands.
 " This makes the syntax automatically set when the file type is detected.
+" Avoid an error when 'verbose' is set and <amatch> expansion fails.
 augroup syntaxset
-  au! FileType *       exe "set syntax=" . expand("<amatch>")
+  au! FileType *       0verbose exe "set syntax=" . expand("<amatch>")
 augroup END
 
 
index 42824d7bb494ac681be4a49de33ec9a13ee82d37..ceb500dc131b38e0c08e2fdec732c2f050a50ba2 100644 (file)
@@ -3084,7 +3084,11 @@ parse_command_modifiers(
                        if (!checkforcmd_noparen(&p, "verbose", 4))
                            break;
                        if (vim_isdigit(*eap->cmd))
+                       {
                            cmod->cmod_verbose = atoi((char *)eap->cmd);
+                           if (cmod->cmod_verbose == 0)
+                               cmod->cmod_verbose = -1;
+                       }
                        else
                            cmod->cmod_verbose = 1;
                        eap->cmd = p;
@@ -3158,11 +3162,11 @@ apply_cmdmod(cmdmod_T *cmod)
        cmod->cmod_did_sandbox = TRUE;
     }
 #endif
-    if (cmod->cmod_verbose > 0)
+    if (cmod->cmod_verbose != 0)
     {
        if (cmod->cmod_verbose_save == 0)
            cmod->cmod_verbose_save = p_verbose + 1;
-       p_verbose = cmod->cmod_verbose;
+       p_verbose = cmod->cmod_verbose < 0 ? 0 : cmod->cmod_verbose;
     }
 
     if ((cmod->cmod_flags & (CMOD_SILENT | CMOD_UNSILENT))
@@ -8999,6 +9003,7 @@ find_cmdline_var(char_u *src, int *usedlen)
  *       "<cfile>" to path name under the cursor
  *       "<sfile>" to sourced file name
  *       "<stack>" to call stack
+ *       "<script>" to current script name
  *       "<slnum>" to sourced file line number
  *       "<afile>" to file name for autocommand
  *       "<abuf>"  to buffer number for autocommand
index 670e0d229aeaec9cd149ef0337e14829c7d45842..05ea6fc522495ae10a4b72bddbd821f1c8891064 100644 (file)
@@ -662,7 +662,8 @@ typedef struct
     regmatch_T cmod_filter_regmatch;   // set by :filter /pat/
     int                cmod_filter_force;      // set for :filter!
 
-    int                cmod_verbose;           // non-zero to set 'verbose'
+    int                cmod_verbose;           // non-zero to set 'verbose', -1 is
+                                       // used for zero override
 
     // values for undo_cmdmod()
     char_u     *cmod_save_ei;          // saved value of 'eventignore'
index 731e9aa94fbabe7b004ebf70340f32522a5fa1a7..16d435bf0e6669dd193dae0ae7846b1f71e55497 100644 (file)
@@ -580,10 +580,12 @@ endfunc
 
 " Test for the :verbose command
 func Test_verbose_cmd()
-  call assert_equal(['  verbose=1'], split(execute('verbose set vbs'), "\n"))
+  set verbose=3
+  call assert_match('  verbose=1\n\s*Last set from ', execute('verbose set vbs'), "\n")
   call assert_equal(['  verbose=0'], split(execute('0verbose set vbs'), "\n"))
-  let l = execute("4verbose set verbose | set verbose")
-  call assert_equal(['  verbose=4', '  verbose=0'], split(l, "\n"))
+  set verbose=0
+  call assert_match('  verbose=4\n\s*Last set from .*\n  verbose=0',
+        \ execute("4verbose set verbose | set verbose"))
 endfunc
 
 " Test for the :delete command and the related abbreviated commands
index 5ef4e74972a9f2647660e63a613737fb9b25a8bd..c07ae9dbe5520d3b58be90af4e4058f7becc6d5d 100644 (file)
@@ -746,6 +746,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4741,
 /**/
     4740,
 /**/