Mercurial > vim
changeset 27980:40e35cefeac6 v8.2.4515
patch 8.2.4515: old subsitute syntax is still supported
Commit: https://github.com/vim/vim/commit/9fb7b42935f13b5d3407eb82b151da1e9b4b6048
Author: Bram Moolenaar <Bram@vim.org>
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.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 05 Mar 2022 22:15:02 +0100 |
parents | 48f9b7f4d67c |
children | 9cb0f4a9af46 |
files | src/errors.h src/ex_cmds.c src/testdir/test_substitute.vim src/version.c |
diffstat | 4 files changed, 13 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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) {
--- 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