# HG changeset patch # User Bram Moolenaar # Date 1624185905 -7200 # Node ID d81a5c3a3aa6a30dbc503ba7281f8d56fd408bf6 # Parent 1ed2acf10c0d424dbb8ce475f3f3eaabeb4a7e6e patch 8.2.3021: spaces allowed between option name and "!", "?", etc. Commit: https://github.com/vim/vim/commit/208f0b48b2c616b29f377a1408290111ed2663f7 Author: Bram Moolenaar Date: Sun Jun 20 12:40:08 2021 +0200 patch 8.2.3021: spaces allowed between option name and "!", "?", etc. Problem: Spaces allowed between option name and "!", "?", etc. Solution: Disallow spaces in Vim9 script, it was not documented. (closes #8408) diff --git a/src/option.c b/src/option.c --- a/src/option.c +++ b/src/option.c @@ -1306,9 +1306,10 @@ do_set( // remember character after option name afterchar = arg[len]; - // skip white space, allow ":set ai ?" - while (VIM_ISWHITE(arg[len])) - ++len; + if (!in_vim9script()) + // skip white space, allow ":set ai ?", ":set hlsearch !" + while (VIM_ISWHITE(arg[len])) + ++len; adding = FALSE; prepending = FALSE; diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -3937,6 +3937,26 @@ def Test_mapping_line_number() delfunc g:FuncA enddef +def Test_option_modifier() + var lines =<< trim END + set hlsearch & hlsearch ! + call assert_equal(1, &hlsearch) + END + CheckScriptSuccess(lines) + + lines =<< trim END + vim9script + set hlsearch & + END + CheckScriptFailure(lines, 'E518:') + + lines =<< trim END + vim9script + set hlsearch & hlsearch ! + END + CheckScriptFailure(lines, 'E518:') +enddef + " Keep this last, it messes up highlighting. def Test_substitute_cmd() new diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3021, +/**/ 3020, /**/ 3019,