diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2018-02-12 08:35:34 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2018-02-12 08:35:34 -0800 |
commit | 12a36f6e2ec49ca158a0af730743345699a116e2 (patch) | |
tree | 2bf09adea0fa370f3a5edf56ee0864f741571db5 /parser.c | |
parent | f97f2187e2dd72eec034f6a9b7f93e4174a4c24b (diff) | |
download | txr-12a36f6e2ec49ca158a0af730743345699a116e2.tar.gz txr-12a36f6e2ec49ca158a0af730743345699a116e2.tar.bz2 txr-12a36f6e2ec49ca158a0af730743345699a116e2.zip |
New listener variable: *listener-pprint-s*.
* parser.c (listener_pprint_s): New symbol variable.
(repl): Check new variable after each evaluation and print
accordingly.
(parse_init): Initialize listener_print_s with interned symbol
and register the variable.
* txr.1: Document *listener-pprint-s*.
Diffstat (limited to 'parser.c')
-rw-r--r-- | parser.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -62,6 +62,7 @@ val parser_s, unique_s, circref_s; val listener_hist_len_s, listener_multi_line_p_s, listener_sel_inclusive_p_s; +val listener_pprint_s; val rec_source_loc_s; val intr_s; @@ -1140,6 +1141,7 @@ val repl(val bindings, val in_stream, val out_stream) val hist_len_var = lookup_global_var(listener_hist_len_s); val multi_line_var = lookup_global_var(listener_multi_line_p_s); val sel_inclusive_var = lookup_global_var(listener_sel_inclusive_p_s); + val pprint_var = lookup_global_var(listener_pprint_s); val rw_f = func_f1v(out_stream, repl_warning); val saved_dyn_env = set_dyn_env(make_env(nil, nil, dyn_env)); @@ -1240,9 +1242,10 @@ val repl(val bindings, val in_stream, val out_stream) eval_intrinsic(form, nil), read_eval_ret_last(nil, prev_counter, in_stream, out_stream)); + val pprin = cdr(pprint_var); reg_varl(var_sym, value); sethash(result_hash, var_counter, value); - prinl(value, out_stream); + if3(pprin, pprinl, prinl)(value, out_stream); lino_set_result(ls, utf8_dup_to(c_str(tostring(value)))); lino_hist_add(ls, line_u8); } @@ -1324,6 +1327,7 @@ void parse_init(void) listener_hist_len_s = intern(lit("*listener-hist-len*"), user_package); listener_multi_line_p_s = intern(lit("*listener-multi-line-p*"), user_package); listener_sel_inclusive_p_s = intern(lit("*listener-sel-inclusive-p*"), user_package); + listener_pprint_s = intern(lit("*listener-pprint-p*"), user_package); rec_source_loc_s = intern(lit("*rec-source-loc*"), user_package); unique_s = gensym(nil); prot1(&stream_parser_hash); @@ -1333,6 +1337,7 @@ void parse_init(void) reg_var(listener_hist_len_s, num_fast(500)); reg_var(listener_multi_line_p_s, t); reg_var(listener_sel_inclusive_p_s, nil); + reg_var(listener_pprint_s, nil); reg_var(rec_source_loc_s, nil); reg_fun(circref_s, func_n1(circref)); } |