Mercurial > vim
diff src/vim9compile.c @ 30065:6cf788ab844c v9.0.0370
patch 9.0.0370: cleaning up afterwards can make a function messy
Commit: https://github.com/vim/vim/commit/1d84f7608f1e41dad03b8cc7925895437775f7c0
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Sep 3 21:35:53 2022 +0100
patch 9.0.0370: cleaning up afterwards can make a function messy
Problem: Cleaning up afterwards can make a function messy.
Solution: Add the :defer command.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 03 Sep 2022 22:45:03 +0200 |
parents | f5cbf8a4043d |
children | c0f0118b6790 |
line wrap: on
line diff
--- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -2373,7 +2373,7 @@ compile_assignment(char_u *arg, exarg_T r = generate_PUSHBLOB(cctx, blob_alloc()); break; case VAR_FUNC: - r = generate_PUSHFUNC(cctx, NULL, &t_func_void); + r = generate_PUSHFUNC(cctx, NULL, &t_func_void, TRUE); break; case VAR_LIST: r = generate_NEWLIST(cctx, 0, FALSE); @@ -2748,6 +2748,7 @@ compile_def_function( // Was compiled in this mode before: Free old instructions. delete_def_function_contents(dfunc, FALSE); ga_clear_strings(&dfunc->df_var_names); + dfunc->df_defer_var_idx = 0; } else { @@ -3249,6 +3250,10 @@ compile_def_function( line = compile_eval(p, &cctx); break; + case CMD_defer: + line = compile_defer(p, &cctx); + break; + case CMD_echo: case CMD_echon: case CMD_echoconsole: