1
0
forked from aniani/vim

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.
This commit is contained in:
Bram Moolenaar
2022-03-05 21:13:26 +00:00
parent b2175220da
commit 9fb7b42935
4 changed files with 13 additions and 0 deletions

View File

@@ -3246,4 +3246,6 @@ EXTERN char e_cannot_use_s_colon_in_vim9_script_str[]
INIT(= N_("E1268: Cannot use s: in Vim9 script: %s")); INIT(= N_("E1268: Cannot use s: in Vim9 script: %s"));
EXTERN char e_cannot_create_vim9_script_variable_in_function_str[] EXTERN char e_cannot_create_vim9_script_variable_in_function_str[]
INIT(= N_("E1269: Cannot create a Vim9 script variable in a function: %s")); 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 #endif

View File

@@ -3737,6 +3737,11 @@ ex_substitute(exarg_T *eap)
*/ */
if (*cmd == '\\') if (*cmd == '\\')
{ {
if (in_vim9script())
{
emsg(_(e_cannot_use_s_backslash_in_vim9_script));
return;
}
++cmd; ++cmd;
if (vim_strchr((char_u *)"/?&", *cmd) == NULL) if (vim_strchr((char_u *)"/?&", *cmd) == NULL)
{ {

View File

@@ -811,6 +811,10 @@ func Test_sub_vi_compatibility()
s\&green& s\&green&
call assert_equal('amber green yellow white green', getline(1)) call assert_equal('amber green yellow white green', getline(1))
close! close!
call assert_fails('vim9cmd s\/white/', 'E1270:')
call assert_fails('vim9cmd s\?white?', 'E1270:')
call assert_fails('vim9cmd s\&white&', 'E1270:')
endfunc endfunc
" Test for substitute with the new text longer than the original text " Test for substitute with the new text longer than the original text

View File

@@ -754,6 +754,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
4515,
/**/ /**/
4514, 4514,
/**/ /**/