# HG changeset patch # User Bram Moolenaar # Date 1641040203 -3600 # Node ID be85735650f7ccb424a48e3bab5626c0293aceab # Parent fdb37f03e58d39c1f7a7577f12029ee3cc67ff8c 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 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'). diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt --- 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* diff --git a/src/evalfunc.c b/src/evalfunc.c --- 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}, 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 @@ -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']) diff --git a/src/version.c b/src/version.c --- 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,