changeset 24968:d81a5c3a3aa6 v8.2.3021

patch 8.2.3021: spaces allowed between option name and "!", "?", etc. Commit: https://github.com/vim/vim/commit/208f0b48b2c616b29f377a1408290111ed2663f7 Author: Bram Moolenaar <Bram@vim.org> 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)
author Bram Moolenaar <Bram@vim.org>
date Sun, 20 Jun 2021 12:45:05 +0200
parents 1ed2acf10c0d
children 445ed84ae76a
files src/option.c src/testdir/test_vim9_script.vim src/version.c
diffstat 3 files changed, 26 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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;
--- 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
--- 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,