diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-04-12 14:23:19 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-04-12 14:23:19 +0100 |
commit | 60895f3e36def9beb7d5463e792e5154ad9a7a0a (patch) | |
tree | e27a7746b43c278eb9ec66ef3a23086cf34a75bd | |
parent | 575445200bd35283191ecd7a0d596b37c5b477a4 (diff) |
patch 8.2.4741: startup test failsv8.2.4741
Problem: Startup test fails.
Solution: Avoid an error for verbose expansion. Fix that the "0verbose"
command modifier doesn't work.
-rw-r--r-- | runtime/syntax/synload.vim | 2 | ||||
-rw-r--r-- | runtime/syntax/syntax.vim | 3 | ||||
-rw-r--r-- | src/ex_docmd.c | 9 | ||||
-rw-r--r-- | src/structs.h | 3 | ||||
-rw-r--r-- | src/testdir/test_excmd.vim | 8 | ||||
-rw-r--r-- | src/version.c | 2 |
6 files changed, 19 insertions, 8 deletions
diff --git a/runtime/syntax/synload.vim b/runtime/syntax/synload.vim index f373161c7c..728b653d8e 100644 --- a/runtime/syntax/synload.vim +++ b/runtime/syntax/synload.vim @@ -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 == "" diff --git a/runtime/syntax/syntax.vim b/runtime/syntax/syntax.vim index f274d93f4f..4cb02887a1 100644 --- a/runtime/syntax/syntax.vim +++ b/runtime/syntax/syntax.vim @@ -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 diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 42824d7bb4..ceb500dc13 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -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 diff --git a/src/structs.h b/src/structs.h index 670e0d229a..05ea6fc522 100644 --- a/src/structs.h +++ b/src/structs.h @@ -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' diff --git a/src/testdir/test_excmd.vim b/src/testdir/test_excmd.vim index 731e9aa94f..16d435bf0e 100644 --- a/src/testdir/test_excmd.vim +++ b/src/testdir/test_excmd.vim @@ -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 diff --git a/src/version.c b/src/version.c index 5ef4e74972..c07ae9dbe5 100644 --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4741, +/**/ 4740, /**/ 4739, |