Module Format_doc.Doc
Definitions and immutable API for composing documents
Type definitions and core functions
type stag = Stdlib.Format.stagtype element = | Text of string| With_size of int| Open_box of {kind : Merlin_utils.Format_doc.Doc.box_type;indent : int;
}| Close_box| Open_tag of Stdlib.Format.stag| Close_tag| Open_tbox| Tab_break of {}| Set_tab| Close_tbox| Simple_break of {}| Break of {}| Flush of {}| Newline| If_newline| Deprecated of Stdlib.Format.formatter -> unit(*Escape hatch: a
*)Formatprinter used to provide backward-compatibility for user-defined printer (from the#install_printertoplevel directive for instance).
Base formatting instruction recognized by Format
type ('a, 'b) fmt =
('a, Merlin_utils.Format_doc.Doc.t, Merlin_utils.Format_doc.Doc.t, 'b)
Stdlib.format4type printer0 = Merlin_utils.Format_doc.Doc.t -> Merlin_utils.Format_doc.Doc.ttype 'a printer = 'a -> Merlin_utils.Format_doc.Doc.printer0val empty : Merlin_utils.Format_doc.Doc.tEmpty document
val format : Stdlib.Format.formatter -> Merlin_utils.Format_doc.Doc.t -> unitformat ppf doc sends the format instruction of doc to the Format's formatter doc.
val fold :
('acc -> Merlin_utils.Format_doc.Doc.element -> 'acc) ->
'acc ->
Merlin_utils.Format_doc.Doc.t ->
'accFold over a document as a sequence of instructions
val msg :
('a, Merlin_utils.Format_doc.Doc.t) Merlin_utils.Format_doc.Doc.fmt ->
'aval kmsg :
(Merlin_utils.Format_doc.Doc.t -> 'b) ->
('a, 'b) Merlin_utils.Format_doc.Doc.fmt ->
'aval printf :
('a, Merlin_utils.Format_doc.Doc.printer0) Merlin_utils.Format_doc.Doc.fmt ->
'aval kprintf :
(Merlin_utils.Format_doc.Doc.t -> 'b) ->
('a, Merlin_utils.Format_doc.Doc.t -> 'b) Merlin_utils.Format_doc.Doc.fmt ->
'aval open_box :
Merlin_utils.Format_doc.Doc.box_type ->
int ->
Merlin_utils.Format_doc.Doc.printer0The functions below mirror Format printers, without the pp_print_ prefix naming convention
val close_box : Merlin_utils.Format_doc.Doc.printer0val text : string Merlin_utils.Format_doc.Doc.printerval string : string Merlin_utils.Format_doc.Doc.printerval bytes : bytes Merlin_utils.Format_doc.Doc.printerval with_size : int Merlin_utils.Format_doc.Doc.printerval int : int Merlin_utils.Format_doc.Doc.printerval float : float Merlin_utils.Format_doc.Doc.printerval char : char Merlin_utils.Format_doc.Doc.printerval bool : bool Merlin_utils.Format_doc.Doc.printerval space : Merlin_utils.Format_doc.Doc.printer0val cut : Merlin_utils.Format_doc.Doc.printer0val break : spaces:int -> indent:int -> Merlin_utils.Format_doc.Doc.printer0val custom_break :
fits:((string * int * string) as 'a) ->
breaks:'a ->
Merlin_utils.Format_doc.Doc.printer0val force_newline : Merlin_utils.Format_doc.Doc.printer0val if_newline : Merlin_utils.Format_doc.Doc.printer0val flush : Merlin_utils.Format_doc.Doc.printer0val force_stop : Merlin_utils.Format_doc.Doc.printer0val open_tbox : Merlin_utils.Format_doc.Doc.printer0val set_tab : Merlin_utils.Format_doc.Doc.printer0val tab : Merlin_utils.Format_doc.Doc.printer0val tab_break : width:int -> offset:int -> Merlin_utils.Format_doc.Doc.printer0val close_tbox : Merlin_utils.Format_doc.Doc.printer0val close_tag : Merlin_utils.Format_doc.Doc.printer0val list :
?sep:Merlin_utils.Format_doc.Doc.printer0 ->
'a Merlin_utils.Format_doc.Doc.printer ->
'a list Merlin_utils.Format_doc.Doc.printerval iter :
?sep:Merlin_utils.Format_doc.Doc.printer0 ->
iter:(('a -> unit) -> 'b -> unit) ->
'a Merlin_utils.Format_doc.Doc.printer ->
'b Merlin_utils.Format_doc.Doc.printerval array :
?sep:Merlin_utils.Format_doc.Doc.printer0 ->
'a Merlin_utils.Format_doc.Doc.printer ->
'a array Merlin_utils.Format_doc.Doc.printerval seq :
?sep:Merlin_utils.Format_doc.Doc.printer0 ->
'a Merlin_utils.Format_doc.Doc.printer ->
'a Stdlib.Seq.t Merlin_utils.Format_doc.Doc.printerval option :
?none:Merlin_utils.Format_doc.Doc.printer0 ->
'a Merlin_utils.Format_doc.Doc.printer ->
'a option Merlin_utils.Format_doc.Doc.printerval result :
ok:'a Merlin_utils.Format_doc.Doc.printer ->
error:'e Merlin_utils.Format_doc.Doc.printer ->
('a, 'e) Stdlib.result Merlin_utils.Format_doc.Doc.printerval either :
left:'a Merlin_utils.Format_doc.Doc.printer ->
right:'b Merlin_utils.Format_doc.Doc.printer ->
('a, 'b) Stdlib.Either.t Merlin_utils.Format_doc.Doc.printerAlignment functions
val align_prefix :
(Merlin_utils.Format_doc.Doc.t * int) list ->
Merlin_utils.Format_doc.Doc.t listAlign the right side of one "@{<ralign>...@}" tag box by inserting spaces at the beginning of boxes. Those function do nothing if the tag box appears after a break hint.
val align_prefix2 :
(Merlin_utils.Format_doc.Doc.t * int) ->
(Merlin_utils.Format_doc.Doc.t * int) ->
Merlin_utils.Format_doc.Doc.t * Merlin_utils.Format_doc.Doc.t