mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-21 20:20:24 +02:00
(SCM_PRINT_HIGHLIGHT_PREFIX,
SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options. (scm_iprin1): Use them instead of the previoulsy hardcoded strings. (scm_init_print): Initialize them.
This commit is contained in:
parent
a2902ecb90
commit
81ae25da8c
2 changed files with 18 additions and 7 deletions
|
@ -72,7 +72,11 @@ scm_t_option scm_print_opts[] = {
|
||||||
{ SCM_OPTION_SCM, "closure-hook", SCM_UNPACK (SCM_BOOL_F),
|
{ SCM_OPTION_SCM, "closure-hook", SCM_UNPACK (SCM_BOOL_F),
|
||||||
"Hook for printing closures (should handle macros as well)." },
|
"Hook for printing closures (should handle macros as well)." },
|
||||||
{ SCM_OPTION_BOOLEAN, "source", 0,
|
{ SCM_OPTION_BOOLEAN, "source", 0,
|
||||||
"Print closures with source." }
|
"Print closures with source." },
|
||||||
|
{ SCM_OPTION_SCM, "highlight-prefix", (unsigned long)SCM_BOOL_F,
|
||||||
|
"The string to print before highlighted values." },
|
||||||
|
{ SCM_OPTION_SCM, "highlight-suffix", (unsigned long)SCM_BOOL_F,
|
||||||
|
"The string to print after highlighted values." }
|
||||||
};
|
};
|
||||||
|
|
||||||
SCM_DEFINE (scm_print_options, "print-options-interface", 0, 1, 0,
|
SCM_DEFINE (scm_print_options, "print-options-interface", 0, 1, 0,
|
||||||
|
@ -360,9 +364,9 @@ scm_iprin1 (SCM exp, SCM port, scm_print_state *pstate)
|
||||||
if (pstate->fancyp
|
if (pstate->fancyp
|
||||||
&& scm_is_true (scm_memq (exp, pstate->highlight_objects)))
|
&& scm_is_true (scm_memq (exp, pstate->highlight_objects)))
|
||||||
{
|
{
|
||||||
scm_lfwrite ("{", 1, port);
|
scm_display (SCM_PRINT_HIGHLIGHT_PREFIX, port);
|
||||||
iprin1 (exp, port, pstate);
|
iprin1 (exp, port, pstate);
|
||||||
scm_lfwrite ("}", 1, port);
|
scm_display (SCM_PRINT_HIGHLIGHT_SUFFIX, port);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
iprin1 (exp, port, pstate);
|
iprin1 (exp, port, pstate);
|
||||||
|
@ -1121,6 +1125,11 @@ scm_init_print ()
|
||||||
|
|
||||||
scm_init_opts (scm_print_options, scm_print_opts, SCM_N_PRINT_OPTIONS);
|
scm_init_opts (scm_print_options, scm_print_opts, SCM_N_PRINT_OPTIONS);
|
||||||
|
|
||||||
|
scm_print_options (scm_list_4 (scm_from_locale_symbol ("highlight-prefix"),
|
||||||
|
scm_from_locale_string ("{"),
|
||||||
|
scm_from_locale_symbol ("highlight-suffix"),
|
||||||
|
scm_from_locale_string ("}")));
|
||||||
|
|
||||||
scm_gc_register_root (&print_state_pool);
|
scm_gc_register_root (&print_state_pool);
|
||||||
scm_gc_register_root (&scm_print_state_vtable);
|
scm_gc_register_root (&scm_print_state_vtable);
|
||||||
vtable = scm_make_vtable_vtable (scm_nullstr, SCM_INUM0, SCM_EOL);
|
vtable = scm_make_vtable_vtable (scm_nullstr, SCM_INUM0, SCM_EOL);
|
||||||
|
@ -1134,7 +1143,7 @@ scm_init_print ()
|
||||||
scm_tc16_port_with_ps = scm_make_smob_type (0, 0);
|
scm_tc16_port_with_ps = scm_make_smob_type (0, 0);
|
||||||
scm_set_smob_mark (scm_tc16_port_with_ps, scm_markcdr);
|
scm_set_smob_mark (scm_tc16_port_with_ps, scm_markcdr);
|
||||||
scm_set_smob_print (scm_tc16_port_with_ps, port_with_ps_print);
|
scm_set_smob_print (scm_tc16_port_with_ps, port_with_ps_print);
|
||||||
|
|
||||||
#include "libguile/print.x"
|
#include "libguile/print.x"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,9 +28,11 @@
|
||||||
|
|
||||||
SCM_API scm_t_option scm_print_opts[];
|
SCM_API scm_t_option scm_print_opts[];
|
||||||
|
|
||||||
#define SCM_PRINT_CLOSURE (SCM_PACK (scm_print_opts[0].val))
|
#define SCM_PRINT_CLOSURE (SCM_PACK (scm_print_opts[0].val))
|
||||||
#define SCM_PRINT_SOURCE_P ((int) scm_print_opts[1].val)
|
#define SCM_PRINT_SOURCE_P ((int) scm_print_opts[1].val)
|
||||||
#define SCM_N_PRINT_OPTIONS 2
|
#define SCM_PRINT_HIGHLIGHT_PREFIX (SCM_PACK (scm_print_opts[2].val))
|
||||||
|
#define SCM_PRINT_HIGHLIGHT_SUFFIX (SCM_PACK (scm_print_opts[3].val))
|
||||||
|
#define SCM_N_PRINT_OPTIONS 4
|
||||||
|
|
||||||
/* State information passed around during printing.
|
/* State information passed around during printing.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue