1
0
forked from aniani/vim

patch 8.2.3124: Vim9: no error for white space between option and "=9"

Problem:    Vim9: no error for white space between option and "=9".
Solution:   Check for extraneous white space. (issue #8408)
This commit is contained in:
Bram Moolenaar
2021-07-08 17:35:36 +02:00
parent 1594f31345
commit deb108ba0a
3 changed files with 57 additions and 1 deletions

View File

@@ -1358,7 +1358,22 @@ do_set(
// remember character after option name
afterchar = arg[len];
if (!in_vim9script())
if (in_vim9script())
{
char_u *p = skipwhite(arg + len);
// disallow white space before =val, +=val, -=val, ^=val
if (p > arg + len && (p[0] == '='
|| (vim_strchr((char_u *)"+-^", p[0]) != NULL
&& p[1] == '=')))
{
errmsg = e_no_white_space_allowed_between_option_and;
arg = p;
startarg = p;
goto skip;
}
}
else
// skip white space, allow ":set ai ?", ":set hlsearch !"
while (VIM_ISWHITE(arg[len]))
++len;

View File

@@ -4075,6 +4075,45 @@ def Test_mapping_line_number()
delfunc g:FuncA
enddef
def Test_option_set()
# legacy script allows for white space
var lines =<< trim END
set foldlevel =11
call assert_equal(11, &foldlevel)
END
CheckScriptSuccess(lines)
set foldlevel
set foldlevel=12
assert_equal(12, &foldlevel)
set foldlevel+=2
assert_equal(14, &foldlevel)
set foldlevel-=3
assert_equal(11, &foldlevel)
lines =<< trim END
set foldlevel =1
END
CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: =1')
lines =<< trim END
set foldlevel +=1
END
CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: +=1')
lines =<< trim END
set foldlevel ^=1
END
CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: ^=1')
lines =<< trim END
set foldlevel -=1
END
CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: -=1')
set foldlevel&
enddef
def Test_option_modifier()
# legacy script allows for white space
var lines =<< trim END

View File

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