sig
type message
val size : Rich_text.message -> int
val char_at : Rich_text.message -> int -> char
val string : Rich_text.message -> string
val substring : Rich_text.message -> int -> int -> string
val tags_at : Rich_text.message -> int -> (Format.tag * int * int) list
val visit :
?output:(string -> int -> int -> unit) ->
?open_tag:(Format.tag -> int -> int -> unit) ->
?close_tag:(Format.tag -> int -> int -> unit) ->
Rich_text.message -> unit
val pretty : ?vbox:int -> Format.formatter -> Rich_text.message -> unit
type buffer
val create : ?indent:int -> ?margin:int -> unit -> Rich_text.buffer
val message : Rich_text.buffer -> Rich_text.message
val add_char : Rich_text.buffer -> char -> unit
val add_string : Rich_text.buffer -> string -> unit
val add_substring : Rich_text.buffer -> string -> int -> int -> unit
val formatter : Rich_text.buffer -> Format.formatter
val bprintf :
Rich_text.buffer -> ('a, Format.formatter, unit) Pervasives.format -> 'a
val kprintf :
(Format.formatter -> 'a) ->
Rich_text.buffer ->
('b, Format.formatter, unit, 'a) Pervasives.format4 -> 'b
val contents : Rich_text.buffer -> string
val sub : Rich_text.buffer -> int -> int -> string
val range : Rich_text.buffer -> int -> int -> string
val trim : Rich_text.buffer -> int * int
val shrink : Rich_text.buffer -> unit
end