summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-02-25 01:47:29 -0800
committerKaz Kylheku <kaz@kylheku.com>2015-02-25 01:47:29 -0800
commit3fb190507f1f8cc5ad667abd2b84748f8e703242 (patch)
tree552c8fb3c41f3257aaef7c120dd84684c7dbb34b /eval.c
parentfee5943718c28f2b9e422bf0564ba35870e55d25 (diff)
downloadtxr-3fb190507f1f8cc5ad667abd2b84748f8e703242.tar.gz
txr-3fb190507f1f8cc5ad667abd2b84748f8e703242.tar.bz2
txr-3fb190507f1f8cc5ad667abd2b84748f8e703242.zip
New ignerr macro.
* eval.c (me_ignerr): New static function. (eval_init): Registered ignerr macro. * txr.1: Documented. * tl.vim, txr.vim: Regenerated.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index dce7e949..5b8dcad8 100644
--- a/eval.c
+++ b/eval.c
@@ -2768,6 +2768,11 @@ static val me_opip(val form, val menv)
return cons(dwim_s, cons(chain_chand, transformed_forms));
}
+static val me_ignerr(val form, val menv)
+{
+ return list(catch_s, cons(progn_s, rest(form)),
+ list(error_s, error_s, nao), nao);
+}
static val expand_catch_clause(val form, val menv)
{
@@ -3873,6 +3878,7 @@ void eval_init(void)
reg_mac(intern(lit("tc"), user_package), me_tc);
reg_mac(opip_s, me_opip);
reg_mac(oand_s, me_opip);
+ reg_mac(intern(lit("ignerr"), user_package), me_ignerr);
reg_fun(cons_s, func_n2(cons));
reg_fun(intern(lit("make-lazy-cons"), user_package), func_n1(make_lazy_cons));