changeset 26873:be85735650f7 v8.2.3965

patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported Commit: https://github.com/vim/vim/commit/b79ee0c299d786627784f7304ba84b80e78ece26 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 1 12:17:00 2022 +0000 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported Problem: Vim9: no easy way to check if Vim9 script is supported. Solution: Add has('vim9script').
author Bram Moolenaar <Bram@vim.org>
date Sat, 01 Jan 2022 13:30:03 +0100
parents fdb37f03e58d
children 64d54e4f7f6d
files runtime/doc/vim9.txt src/evalfunc.c src/testdir/test_vim9_script.vim src/version.c
diffstat 4 files changed, 22 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -391,8 +391,8 @@ later.  Example: >
 	  endif
 	enddef
 
-If you would do it like this you get an error at compile time that
-"PluginFunc" does not exist, even when "g:loaded_plugin" does not exist: >
+If you do it like this, you get an error at compile time that "PluginFunc"
+does not exist, even when "g:loaded_plugin" does not exist: >
 	def CallPluginFunc()
 	  if exists('g:loaded_plugin')
 	    PluginFunc()   # Error - function not found
@@ -1411,9 +1411,6 @@ 1. The "if" statement evaluates to false
 2. The "if" statement evaluates to true, the commands up to `endif` are
    executed and `finish` bails out before reaching `vim9script`.
 
-TODO: The "vim9script" feature does not exist yet, it will only be added once
-the Vim9 script syntax has been fully implemented.
-
 
 Export ~
 							*:export* *:exp*
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -5929,6 +5929,7 @@ f_has(typval_T *argvars, typval_T *rettv
 		0
 #endif
 		},
+	{"vim9script", 1},
 	{"vimscript-1", 1},
 	{"vimscript-2", 1},
 	{"vimscript-3", 1},
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -7,6 +7,23 @@ source vim9.vim
 source shared.vim
 source screendump.vim
 
+def Test_vim9script_feature()
+  # example from the help, here the feature is always present
+  var lines =<< trim END
+      " old style comment
+      if !has('vim9script')
+        " legacy commands would go here
+        finish
+      endif
+      vim9script
+      # Vim9 script commands go here
+      g:didit = true
+  END
+  CheckScriptSuccess(lines)
+  assert_equal(true, g:didit)
+  unlet g:didit
+enddef
+
 def Test_range_only()
   new
   setline(1, ['blah', 'Blah'])
--- a/src/version.c
+++ b/src/version.c
@@ -750,6 +750,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3965,
+/**/
     3964,
 /**/
     3963,