Mercurial > vim
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'])