Mercurial > vim
changeset 28433:367439b95aba v8.2.4741
patch 8.2.4741: startup test fails
Commit: https://github.com/vim/vim/commit/60895f3e36def9beb7d5463e792e5154ad9a7a0a
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Apr 12 14:23:19 2022 +0100
patch 8.2.4741: startup test fails
Problem: Startup test fails.
Solution: Avoid an error for verbose expansion. Fix that the "0verbose"
command modifier doesn't work.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 12 Apr 2022 15:30:05 +0200 |
parents | 5e295771ba24 |
children | dfef2e002d5b |
files | runtime/syntax/synload.vim runtime/syntax/syntax.vim src/ex_docmd.c src/structs.h src/testdir/test_excmd.vim src/version.c |
diffstat | 6 files changed, 19 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- 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 == ""
--- 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
--- 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 *usedl * "<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
--- 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'
--- 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