]> granicus.if.org Git - vim/commitdiff
patch 8.2.4506: "pattern not found" for :global is not an error message v8.2.4506
authorBram Moolenaar <Bram@vim.org>
Fri, 4 Mar 2022 21:34:31 +0000 (21:34 +0000)
committerBram Moolenaar <Bram@vim.org>
Fri, 4 Mar 2022 21:34:31 +0000 (21:34 +0000)
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.

src/errors.h
src/ex_cmds.c
src/testdir/test_global.vim
src/version.c

index e08186ef2f66343b04e8eb0eae5c9a03b9c50d48..6f25af6afc38e826a2f1d2c40e3684a4dd74a99d 100644 (file)
@@ -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
index 91a2fa722dbfaaa82817289b4852c29d089edc39..d926df5361ecdfc790ca44fc05a2656fb913d9ee 100644 (file)
@@ -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
        {
index 48753cfcc8e884a667d1f11d7a95c2ebe986ed60..62f588afb8e6b646fe0fd0f96935aec37ff95404 100644 (file)
@@ -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
 
index 5f703c4dd6227d8f0d21e3ae509b2ec4abdc7f79..12ea55670d68fa4f60b7f7407ad389b9f86048ca 100644 (file)
@@ -754,6 +754,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4506,
 /**/
     4505,
 /**/