diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2014-01-28 00:39:43 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2014-01-28 00:39:43 -0800 |
commit | fbf48de67c4ba652b22fe379cb27f7f3b01f314b (patch) | |
tree | d09403d649207d44dbb84db09ad481cf6b8d50b4 /lib.c | |
parent | 0fcfb0282230bdee1f9e5decdba14aa75d8de3e8 (diff) | |
download | txr-fbf48de67c4ba652b22fe379cb27f7f3b01f314b.tar.gz txr-fbf48de67c4ba652b22fe379cb27f7f3b01f314b.tar.bz2 txr-fbf48de67c4ba652b22fe379cb27f7f3b01f314b.zip |
* 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.
Diffstat (limited to 'lib.c')
-rw-r--r-- | lib.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -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) { |