// 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;
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