Mercurial > vim
changeset 27962:0fa3be75ddc7 v8.2.4506
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 <Bram@vim.org>
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.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 04 Mar 2022 22:45:04 +0100 |
parents | dd28ede556db |
children | f88ad1bc7cf0 |
files | src/errors.h src/ex_cmds.c src/testdir/test_global.vim src/version.c |
diffstat | 4 files changed, 36 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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 {
--- 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