diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-08-12 22:18:23 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-08-12 22:18:23 +0200 |
commit | c9edd6b58218d25bfc5389af901021dc0eb82578 (patch) | |
tree | 8520f99adae557ca2c86d3299f4375f14068b50c /src | |
parent | 66e0014ba651208ab7579797866ab0e4bd9e2b49 (diff) |
patch 8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntaxv8.2.1437
Problem: Vim9: 'statusline' is evaluated using Vim9 script syntax.
Solution: Always use legacy script syntax.
Diffstat (limited to 'src')
-rw-r--r-- | src/eval.c | 4 | ||||
-rw-r--r-- | src/testdir/test_vim9_script.vim | 14 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 20 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c index 07b30c723a..984835b6da 100644 --- a/src/eval.c +++ b/src/eval.c @@ -520,6 +520,7 @@ eval_to_string( /* * Call eval_to_string() without using current local variables and using * textwinlock. When "use_sandbox" is TRUE use the sandbox. + * Use legacy Vim script syntax. */ char_u * eval_to_string_safe( @@ -528,7 +529,9 @@ eval_to_string_safe( { char_u *retval; funccal_entry_T funccal_entry; + int save_sc_version = current_sctx.sc_version; + current_sctx.sc_version = 1; save_funccal(&funccal_entry); if (use_sandbox) ++sandbox; @@ -538,6 +541,7 @@ eval_to_string_safe( --sandbox; --textwinlock; restore_funccal(); + current_sctx.sc_version = save_sc_version; return retval; } diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index 8742883e16..b462e473d9 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -1086,6 +1086,20 @@ def Test_cexpr_vimscript() set errorformat& enddef +def Test_statusline_syntax() + # legacy syntax is used for 'statusline' + let lines =<< trim END + vim9script + func g:Status() + return '%{"x" is# "x"}' + endfunc + set laststatus=2 statusline=%!Status() + redrawstatus + set laststatus statusline= + END + CheckScriptSuccess(lines) +enddef + def Test_list_vimscript() # checks line continuation and comments let lines =<< trim END diff --git a/src/version.c b/src/version.c index d4b0afa7be..7fcd9cbe8e 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1437, +/**/ 1436, /**/ 1435, |