summaryrefslogtreecommitdiffstats
path: root/parser.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2020-07-11 14:44:19 -0700
committerKaz Kylheku <kaz@kylheku.com>2020-07-11 14:44:19 -0700
commita6f6072761d124c60793325bc512048b0f31f5a3 (patch)
treed7cbb320dd5ffdd58afe9f2588c876141caca261 /parser.c
parent812e63ca8f42637f6a856e66f57678cbb0472821 (diff)
downloadtxr-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.c13
1 files changed, 13 insertions, 0 deletions
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);