# HG changeset patch # User Bram Moolenaar # Date 1646430304 -3600 # Node ID 0fa3be75ddc72cd0bc9133907d2710c36adeaaec # Parent dd28ede556db6ce3414d695d346dc9cbb916f13f patch 8.2.4506: "pattern not found" for :global is not an error message Commit: https://github.com/vim/vim/commit/24d9c0557ef52141d12ac32568967b190d247c6f Author: Bram Moolenaar Date: Fri Mar 4 21:34:31 2022 +0000 patch 8.2.4506: "pattern not found" for :global is not an error message Problem: "pattern not found" for :global is not an error message. Solution: In Vim9 script make this an actual error, so that try/catch can be used as expected. diff --git a/src/errors.h b/src/errors.h --- a/src/errors.h +++ b/src/errors.h @@ -1346,7 +1346,8 @@ EXTERN char e_comma_required[] EXTERN char e_commentstring_must_be_empty_or_contain_str[] INIT(= N_("E537: 'commentstring' must be empty or contain %s")); #endif -// E538 unused +EXTERN char e_pattern_found_in_every_line_str[] + INIT(= N_("E538: Pattern found in every line: %s")); EXTERN char e_illegal_character_str[] INIT(= N_("E539: Illegal character <%s>")); #ifdef FEAT_STL_OPT diff --git a/src/ex_cmds.c b/src/ex_cmds.c --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -5001,9 +5001,19 @@ ex_global(exarg_T *eap) else if (ndone == 0) { if (type == 'v') - smsg(_("Pattern found in every line: %s"), pat); + { + if (in_vim9script()) + semsg(_(e_pattern_found_in_every_line_str), pat); + else + smsg(_("Pattern found in every line: %s"), pat); + } else - smsg(_("Pattern not found: %s"), pat); + { + if (in_vim9script()) + semsg(_(e_pattern_not_found_str), pat); + else + smsg(_("Pattern not found: %s"), pat); + } } else { diff --git a/src/testdir/test_global.vim b/src/testdir/test_global.vim --- a/src/testdir/test_global.vim +++ b/src/testdir/test_global.vim @@ -68,6 +68,26 @@ func Test_global_print() v/foo\|bar/p call assert_notequal('', v:statusmsg) + " In Vim9 script this is an error + let caught = 'no' + try + vim9cmd v/foo\|bar/p + catch /E538/ + let caught = 'yes' + call assert_match('E538: Pattern found in every line: foo\|bar', v:exception) + endtry + call assert_equal('yes', caught) + + " In Vim9 script not matching is an error + let caught = 'no' + try + vim9cmd g/foobarnotfound/p + catch /E486/ + let caught = 'yes' + call assert_match('E486: Pattern not found: foobarnotfound', v:exception) + endtry + call assert_equal('yes', caught) + close! endfunc diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4506, +/**/ 4505, /**/ 4504,