From fbf48de67c4ba652b22fe379cb27f7f3b01f314b Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 28 Jan 2014 00:39:43 -0800 Subject: * eval.c (meta_meta_p, meta_meta_strip): New static functions. (transform_op): Recognize compounded metas, and strip one level off. (eval_init): Intern sys:expand function so we have access to the form expander from TXR Lisp. * lib.c (obj_print, obj_pprint): Fix: wasn't rendering metanumbers. * parser.y (list): Support @ in front of anything. If it's an atom, treat it similarly to a metasymbol or metanumber. * txr.1: Documented meta-meta arguments in nested op. * genvim.txr, txr.vim: Support coloring for compounded meta syntax. --- lib.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'lib.c') diff --git a/lib.c b/lib.c index c83dde14..4213f0d4 100644 --- a/lib.c +++ b/lib.c @@ -5072,7 +5072,9 @@ val obj_print(val obj, val out) } else if (sym == splice_s) { put_string(lit(",*"), out); obj_print(second(obj), out); - } else if (sym == var_s && symbolp(second(obj)) && !cdr(cdr(obj))) { + } else if (sym == var_s && (symbolp(second(obj)) || integerp(second(obj))) + && !cdr(cdr(obj))) + { put_char(chr('@'), out); obj_print(second(obj), out); } else if (sym == expr_s) { @@ -5237,7 +5239,9 @@ val obj_pprint(val obj, val out) } else if (sym == splice_s) { put_string(lit(",*"), out); obj_pprint(second(obj), out); - } else if (sym == var_s && symbolp(second(obj)) && !cdr(cdr(obj))) { + } else if (sym == var_s && (symbolp(second(obj)) || integerp(second(obj))) + && !cdr(cdr(obj))) + { put_char(chr('@'), out); obj_print(second(obj), out); } else if (sym == expr_s) { -- cgit v1.2.3