summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib.c b/lib.c
index f31b8e79..4fdcaacf 100644
--- a/lib.c
+++ b/lib.c
@@ -12383,8 +12383,17 @@ val obj_print_impl(val obj, val out, val pretty, struct strm_ctx *ctx)
put_char(chr('@'), out);
obj_print_impl(arg, out, pretty, ctx);
} else if (sym == expr_s && two_elem && consp(arg)) {
+ val inarg = car(arg);
put_char(chr('@'), out);
- obj_print_impl(arg, out, pretty, ctx);
+ if (inarg != rcons_s) {
+ obj_print_impl(arg, out, pretty, ctx);
+ } else {
+ obj = arg;
+ sym = inarg;
+ args = cdr(obj);
+ arg = car(obj);
+ goto list;
+ }
} else if (sym == rcons_s && have_args
&& consp(cdr(args)) && !(cddr(args)))
{
@@ -12440,7 +12449,7 @@ val obj_print_impl(val obj, val out, val pretty, struct strm_ctx *ctx)
args = cdr(args);
}
put_char(chr('`'), out);
- } else {
+ } else list: {
val iter;
val closepar = chr(')');
val indent = zero;