Mercurial > vim
diff src/evalvars.c @ 27305:30d8437ad7cc v8.2.4181
patch 8.2.4181: Vim9: cannot use an import in 'diffexpr'
Commit: https://github.com/vim/vim/commit/7b29f6a3949743914f08410b6f6bd6237c2f2038
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jan 22 17:58:13 2022 +0000
patch 8.2.4181: Vim9: cannot use an import in 'diffexpr'
Problem: Vim9: cannot use an import in 'diffexpr'.
Solution: Set the script context when evaluating 'diffexpr'. Do not require
'diffexpr' to return a bool, it was ignored anyway.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 22 Jan 2022 19:00:04 +0100 |
parents | 53edd190a607 |
children | bb36a04d7e34 |
line wrap: on
line diff
--- 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