summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-08-12 22:18:23 +0200
committerBram Moolenaar <Bram@vim.org>2020-08-12 22:18:23 +0200
commitc9edd6b58218d25bfc5389af901021dc0eb82578 (patch)
tree8520f99adae557ca2c86d3299f4375f14068b50c /src
parent66e0014ba651208ab7579797866ab0e4bd9e2b49 (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.c4
-rw-r--r--src/testdir/test_vim9_script.vim14
-rw-r--r--src/version.c2
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,