# HG changeset patch # User Bram Moolenaar # Date 1646514902 -3600 # Node ID 40e35cefeac60235307a19b29f1c4572536adec2 # Parent 48f9b7f4d67c2cc9db5dbcdd5924341581c27693 patch 8.2.4515: old subsitute syntax is still supported Commit: https://github.com/vim/vim/commit/9fb7b42935f13b5d3407eb82b151da1e9b4b6048 Author: Bram Moolenaar Date: Sat Mar 5 21:13:26 2022 +0000 patch 8.2.4515: old subsitute syntax is still supported Problem: Old subsitute syntax is still supported. Solution: Disallow using backslash after ":s" in Vim9 script. diff --git a/src/errors.h b/src/errors.h --- a/src/errors.h +++ b/src/errors.h @@ -3246,4 +3246,6 @@ EXTERN char e_cannot_use_s_colon_in_vim9 INIT(= N_("E1268: Cannot use s: in Vim9 script: %s")); EXTERN char e_cannot_create_vim9_script_variable_in_function_str[] INIT(= N_("E1269: Cannot create a Vim9 script variable in a function: %s")); +EXTERN char e_cannot_use_s_backslash_in_vim9_script[] + INIT(= N_("E1270: Cannot use :s\\/sub/ in Vim9 script")); #endif diff --git a/src/ex_cmds.c b/src/ex_cmds.c --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -3737,6 +3737,11 @@ ex_substitute(exarg_T *eap) */ if (*cmd == '\\') { + if (in_vim9script()) + { + emsg(_(e_cannot_use_s_backslash_in_vim9_script)); + return; + } ++cmd; if (vim_strchr((char_u *)"/?&", *cmd) == NULL) { diff --git a/src/testdir/test_substitute.vim b/src/testdir/test_substitute.vim --- a/src/testdir/test_substitute.vim +++ b/src/testdir/test_substitute.vim @@ -811,6 +811,10 @@ func Test_sub_vi_compatibility() s\&green& call assert_equal('amber green yellow white green', getline(1)) close! + + call assert_fails('vim9cmd s\/white/', 'E1270:') + call assert_fails('vim9cmd s\?white?', 'E1270:') + call assert_fails('vim9cmd s\&white&', 'E1270:') endfunc " Test for substitute with the new text longer than the original text 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 */ /**/ + 4515, +/**/ 4514, /**/ 4513,