Module Sexp_pretty.Config
val sexp_of_color : color -> Ppx_sexp_conv_lib.Sexp.t
val color_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> color
val sexp_of_atom_threshold : atom_threshold -> Ppx_sexp_conv_lib.Sexp.t
val atom_threshold_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> atom_threshold
val sexp_of_char_threshold : char_threshold -> Ppx_sexp_conv_lib.Sexp.t
val char_threshold_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> char_threshold
type depth_threshold
=
|
Depth_threshold of int
Depth is the depth of an atom. For example, in (a (b (c) d)), the depth of a is 1, the depth of b and d is 2, and depth of c is 3. Depth_threshold usually refers to the maximum depth of any atom in a list for it to be considered for certain heuristic, e.g. data alignment.
val sexp_of_depth_threshold : depth_threshold -> Ppx_sexp_conv_lib.Sexp.t
val depth_threshold_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> depth_threshold
type aligned_parens
=
|
Parens_alignment of bool
Whether or not should closing parentheses be aligned.
val sexp_of_aligned_parens : aligned_parens -> Ppx_sexp_conv_lib.Sexp.t
val aligned_parens_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> aligned_parens
type data_alignment
=
|
Data_not_aligned
|
Data_aligned of aligned_parens * atom_threshold * char_threshold * depth_threshold
Character threshold is excluding spaces and parentheses, the maximum depth can't exceed the depth threshold.
val sexp_of_data_alignment : data_alignment -> Ppx_sexp_conv_lib.Sexp.t
val data_alignment_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> data_alignment
type atom_coloring
=
|
Color_first of int
Color the first one, only if the number of atoms that follow it at most the value of the constructor's argument.
|
Color_all
|
Color_none
val sexp_of_atom_coloring : atom_coloring -> Ppx_sexp_conv_lib.Sexp.t
val atom_coloring_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> atom_coloring
type comment_indent
=
|
Auto_indent_comment
|
Indent_comment of int
This currently relates only to block comments.
Auto_indent
tries to infer the indentation from the original formatting,Indent_comment n
indents new lines in a block comment by n spaces.
val sexp_of_comment_indent : comment_indent -> Ppx_sexp_conv_lib.Sexp.t
val comment_indent_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> comment_indent
type comment_print_style
=
|
Pretty_print
Auto aligns multi-line block comments.
|
Conservative_print
Leaves block comments as they are, only adjusts indentation.
val sexp_of_comment_print_style : comment_print_style -> Ppx_sexp_conv_lib.Sexp.t
val comment_print_style_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> comment_print_style
type comments
=
|
Drop
|
Print of comment_indent * color option * comment_print_style
Comment treatment.
val sexp_of_comments : comments -> Ppx_sexp_conv_lib.Sexp.t
val comments_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> comments
type atom_printing
=
|
Escaped
Can be parsed again. Atoms are printed out as loaded, with escaping.
|
Interpreted
Try to interpret atoms as sexps.
val sexp_of_atom_printing : atom_printing -> Ppx_sexp_conv_lib.Sexp.t
val atom_printing_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> atom_printing
type singleton_limit
=
|
Singleton_limit of atom_threshold * char_threshold
Singleton_lists are lists of the following format
(ATOM_1 .. ATOM_N (....))
and are printed in the following way if they are too big to fit on a line/force a breakline for other reasons:
(ATOM_1 .. ATOM_N ( .... ))
Thresholds correspond to what's an acceptable number/size of the leading atoms ATOM_1 through ATOM_N.
Character threshold is excluding spaces.
val sexp_of_singleton_limit : singleton_limit -> Ppx_sexp_conv_lib.Sexp.t
val singleton_limit_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> singleton_limit
val sexp_of_paren_coloring : paren_coloring -> Ppx_sexp_conv_lib.Sexp.t
val paren_coloring_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> paren_coloring
val sexp_of_separator : separator -> Ppx_sexp_conv_lib.Sexp.t
val separator_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> separator
type parens
=
|
Same_line
|
New_line
Should closing parentheses be on the same line as the last sexp in the list (modulo comments), or should they be on new lines? Should opening parentheses always be on the same line as what follows them, or should they sometimes (when the first item in the list is a list followed by some other sexp) be on a separate line?
val sexp_of_parens : parens -> Ppx_sexp_conv_lib.Sexp.t
val parens_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> parens
type t
=
{
indent : int;
data_alignment : data_alignment;
color_scheme : color array;
atom_coloring : atom_coloring;
atom_printing : atom_printing;
paren_coloring : paren_coloring;
opening_parens : parens;
closing_parens : parens;
comments : comments;
singleton_limit : singleton_limit;
leading_threshold : atom_threshold * char_threshold;
separator : separator;
sticky_comments : bool;
}
include Ppx_sexp_conv_lib.Sexpable.S with type t := t
val t_of_sexp : Sexplib0.Sexp.t -> t
val sexp_of_t : t -> Sexplib0.Sexp.t
val default : t
val create : ?color:bool -> ?interpret_atom_as_sexp:bool -> ?drop_comments:bool -> ?new_line_separator:bool -> ?custom_data_alignment:data_alignment -> unit -> t
val update : ?color:bool -> ?interpret_atom_as_sexp:bool -> ?drop_comments:bool -> ?new_line_separator:bool -> ?custom_data_alignment:data_alignment -> t -> t