From a6f6072761d124c60793325bc512048b0f31f5a3 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sat, 11 Jul 2020 14:44:19 -0700 Subject: listener: new *-1, *-2 ... *-20 macros. * arith.h (minus_s): Declared. * eval.c (reg_symacro): Changing to external linkage. * eval.h (macro_time_s, reg_symacro): Declared. * parser.c (repl): Bind the *-1 to *-20 symbol macros. * txr.1: Documented. --- parser.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'parser.c') diff --git a/parser.c b/parser.c index 08174154..2c61c742 100644 --- a/parser.c +++ b/parser.c @@ -60,6 +60,7 @@ #include "parser.h" #include "regex.h" #include "itypes.h" +#include "arith.h" #include "buf.h" #include "vm.h" #include "txr.h" @@ -1459,6 +1460,7 @@ val repl(val bindings, val in_stream, val out_stream, val env) val rw_f = func_f1v(out_stream, repl_warning); val saved_dyn_env = set_dyn_env(make_env(nil, nil, dyn_env)); val brackets = mkstring(num_fast(repl_level), chr('>')); + cnum i; env_vbind(dyn_env, stderr_s, out_stream); @@ -1467,6 +1469,17 @@ val repl(val bindings, val in_stream, val out_stream, val env) reg_varl(car(binding), cdr(binding)); } + for (i = 1; i <= 20; i++) { + val name = format(nil, lit("*-~d"), num_fast(i), nao); + val sym = intern(name, user_package); + reg_symacro(sym, list(dwim_s, result_hash_sym, + list(macro_time_s, + list(mod_s, + list(minus_s, var_counter_sym, + num_fast(i), nao), + num_fast(100), nao), nao), nao)); + } + reg_varl(result_hash_sym, result_hash); lino_set_completion_cb(ls, provide_completions, 0); -- cgit v1.2.3