diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-07-11 14:44:19 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-07-11 14:44:19 -0700 |
commit | a6f6072761d124c60793325bc512048b0f31f5a3 (patch) | |
tree | d7cbb320dd5ffdd58afe9f2588c876141caca261 /parser.c | |
parent | 812e63ca8f42637f6a856e66f57678cbb0472821 (diff) | |
download | txr-a6f6072761d124c60793325bc512048b0f31f5a3.tar.gz txr-a6f6072761d124c60793325bc512048b0f31f5a3.tar.bz2 txr-a6f6072761d124c60793325bc512048b0f31f5a3.zip |
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.
Diffstat (limited to 'parser.c')
-rw-r--r-- | parser.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -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); |