summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-03-04 21:34:31 +0000
committerBram Moolenaar <Bram@vim.org>2022-03-04 21:34:31 +0000
commit24d9c0557ef52141d12ac32568967b190d247c6f (patch)
tree49ea9a439a258adc97e5897364ef5a63ca6f7c53
parentf07751457c39a645009c17cd837131f6bcdd7d55 (diff)
downloadvim-git-8.2.4506.tar.gz
patch 8.2.4506: "pattern not found" for :global is not an error messagev8.2.4506
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.
-rw-r--r--src/errors.h3
-rw-r--r--src/ex_cmds.c14
-rw-r--r--src/testdir/test_global.vim20
-rw-r--r--src/version.c2
4 files changed, 36 insertions, 3 deletions
diff --git a/src/errors.h b/src/errors.h
index e08186ef2..6f25af6af 100644
--- 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
index 91a2fa722..d926df536 100644
--- 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
index 48753cfcc..62f588afb 100644
--- 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
index 5f703c4dd..12ea55670 100644
--- 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,