diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-07-31 06:15:16 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-07-31 06:15:16 -0700 |
commit | dbbfc2c41a3710bc64df7b477fcfa536da79233f (patch) | |
tree | e4527f7c82e8304c59b71792b10ee240f98eae61 /eval.h | |
parent | ab1a633e67d04bb36b2b00461e1a72a786bab917 (diff) | |
download | txr-dbbfc2c41a3710bc64df7b477fcfa536da79233f.tar.gz txr-dbbfc2c41a3710bc64df7b477fcfa536da79233f.tar.bz2 txr-dbbfc2c41a3710bc64df7b477fcfa536da79233f.zip |
Multi-line, indented printing of structure.
* eval.c (op_error): New static function.
(macro_form_p, fboundp): Static to external.
(special_operator_p): New function.
(eval_init): Register macrolet and symacrolet to op_error.
These are recognized and processed by expand, but we want
them in the op table so they are reported by special_operator_p.
* eval.h (fboundp, macro_form_p, special_operator_p): Declared.
* hash.c (print_key_val): Break long lines on spaces
between pairs with stream_width_check.
(hash_print_op): Implement split and indented printing.
* lib.c (obj_print_impl): New static function, resulting
from a merge of obj_print and obj_pprint. Fixes some
wrong-way recursion bugs: obj_pprint recursed into obj_print
in some places. Adds support for multi-line printing of
vectors and lists, with indentation using the new
interfaces in streams.
* stream.c (strm_base_init): Update initializer.
(put_indent, indent_mode_put_string): New static functions.
(put_string): Use indent_mode_put_string in either of the
two indent modes.
(put_char): Implement indent mode.
(get_indent_mode, test_set_indent_mode,
set_indent_mode, get_indent, set_indent,
inc_indent, width_check): New functions.
* stream.h (enum indent_mode): New.
(struct strm_base): indent_on member becomes indent_mode.
New members data_width and code_width.
(get_indent_mode, test_set_indent_mode,
set_indent_mode, get_indent, set_indent,
inc_indent, width_check): Declared.
* tests/009/json.expected: Updated.
* tests/010/seq.expected: Likewise.
* tests/011/macros-2.expected: Likewise.
Diffstat (limited to 'eval.h')
-rw-r--r-- | eval.h | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -36,6 +36,9 @@ val lookup_var(val env, val sym); loc lookup_var_l(val env, val sym); val lookup_fun(val env, val sym); val interp_fun(val env, val fun, val args); +val fboundp(val sym); +val special_operator_p(val sym); +val macro_form_p(val form, val menv); void reg_var(val sym, val val); void reg_fun(val sym, val fun); val apply(val fun, val arglist, val ctx_form); |