diff options
-rw-r--r-- | src/evalvars.c | 15 | ||||
-rw-r--r-- | src/testdir/test_vim9_import.vim | 43 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 58 insertions, 2 deletions
diff --git a/src/evalvars.c b/src/evalvars.c index d86d6eb51..a1d2b9b49 100644 --- a/src/evalvars.c +++ b/src/evalvars.c @@ -415,15 +415,26 @@ eval_diff( char_u *newfile, char_u *outfile) { - int err = FALSE; + sctx_T saved_sctx = current_sctx; + sctx_T *ctx; + typval_T *tv; set_vim_var_string(VV_FNAME_IN, origfile, -1); set_vim_var_string(VV_FNAME_NEW, newfile, -1); set_vim_var_string(VV_FNAME_OUT, outfile, -1); - (void)eval_to_bool(p_dex, &err, NULL, FALSE); + + ctx = get_option_sctx("diffexpr"); + if (ctx != NULL) + current_sctx = *ctx; + + // errors are ignored + tv = eval_expr(p_dex, NULL); + clear_tv(tv); + set_vim_var_string(VV_FNAME_IN, NULL, -1); set_vim_var_string(VV_FNAME_NEW, NULL, -1); set_vim_var_string(VV_FNAME_OUT, NULL, -1); + current_sctx = saved_sctx; } void diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim index 3608802b1..e6d972896 100644 --- a/src/testdir/test_vim9_import.vim +++ b/src/testdir/test_vim9_import.vim @@ -716,6 +716,49 @@ def Test_use_autoload_import_in_fold_expression() &rtp = save_rtp enddef +func Test_import_in_diffexpr() + CheckExecutable diff + + call Run_Test_import_in_diffexpr() +endfunc + +def Run_Test_import_in_diffexpr() + var lines =<< trim END + vim9script + + export def DiffExpr() + # Prepend some text to check diff type detection + writefile(['warning', ' message'], v:fname_out) + silent exe '!diff ' .. v:fname_in .. ' ' + .. v:fname_new .. '>>' .. v:fname_out + enddef + END + writefile(lines, 'Xdiffexpr') + + lines =<< trim END + vim9script + import './Xdiffexpr' as diff + + set diffexpr=diff.DiffExpr() + set diffopt=foldcolumn:0 + END + CheckScriptSuccess(lines) + + enew! + call setline(1, ['one', 'two', 'three']) + diffthis + + botright vert new + call setline(1, ['one', 'two', 'three.']) + diffthis + # we only check if this does not cause errors + redraw + + diffoff! + bwipe! + bwipe! +enddef + def Test_export_fails() CheckScriptFailure(['export var some = 123'], 'E1042:') CheckScriptFailure(['vim9script', 'export var g:some'], 'E1022:') diff --git a/src/version.c b/src/version.c index 88d32ffa8..cc5c10167 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4181, +/**/ 4180, /**/ 4179, |