src/Pure/General/pretty.ML
changeset 23660 18765718cf62
parent 23659 4b702ac388d6
child 23698 af84f2f13d4d
equal deleted inserted replaced
23659:4b702ac388d6 23660:18765718cf62
    18 
    18 
    19 The stored length of a block is used in breakdist (to treat each inner block as
    19 The stored length of a block is used in breakdist (to treat each inner block as
    20 a unit for breaking).
    20 a unit for breaking).
    21 *)
    21 *)
    22 
    22 
    23 type pprint_args = (string -> unit) * (int -> unit) * (int -> unit) *
    23 type pprint_args = (output -> unit) * (int -> unit) * (int -> unit) *
    24   (unit -> unit) * (unit -> unit);
    24   (unit -> unit) * (unit -> unit);
    25 
    25 
    26 signature PRETTY =
    26 signature PRETTY =
    27 sig
    27 sig
    28   val default_indent: string -> int -> string
    28   val default_indent: string -> int -> output
    29   val default_markup: Markup.T -> string * string
    29   val default_markup: Markup.T -> output * output
    30   val mode_markup: Markup.T -> string * string
    30   val mode_markup: Markup.T -> output * output
    31   val add_mode: string -> (string -> int -> string) -> (Markup.T -> string * string) -> unit
    31   val add_mode: string -> (string -> int -> output) -> (Markup.T -> output * output) -> unit
    32   type T
    32   type T
    33   val raw_str: string * int -> T
    33   val raw_str: output * int -> T
    34   val str: string -> T
    34   val str: string -> T
    35   val brk: int -> T
    35   val brk: int -> T
    36   val fbrk: T
    36   val fbrk: T
    37   val breaks: T list -> T list
    37   val breaks: T list -> T list
    38   val fbreaks: T list -> T list
    38   val fbreaks: T list -> T list
    61   val setmp_margin: int -> ('a -> 'b) -> 'a -> 'b
    61   val setmp_margin: int -> ('a -> 'b) -> 'a -> 'b
    62   val setdepth: int -> unit
    62   val setdepth: int -> unit
    63   val pprint: T -> pprint_args -> unit
    63   val pprint: T -> pprint_args -> unit
    64   val symbolicN: string
    64   val symbolicN: string
    65   val output_buffer: T -> Buffer.T
    65   val output_buffer: T -> Buffer.T
    66   val output: T -> string
    66   val output: T -> output
    67   val string_of: T -> string
    67   val string_of: T -> string
    68   val str_of: T -> string
    68   val str_of: T -> string
    69   val writeln: T -> unit
    69   val writeln: T -> unit
    70   type pp
    70   type pp
    71   val pp: (term -> T) * (typ -> T) * (sort -> T) * (class list -> T) * (arity -> T) -> pp
    71   val pp: (term -> T) * (typ -> T) * (sort -> T) * (class list -> T) * (arity -> T) -> pp
   116 
   116 
   117 (** printing items: compound phrases, strings, and breaks **)
   117 (** printing items: compound phrases, strings, and breaks **)
   118 
   118 
   119 datatype T =
   119 datatype T =
   120   Block of Markup.T * T list * int * int |  (*markup, body, indentation, length*)
   120   Block of Markup.T * T list * int * int |  (*markup, body, indentation, length*)
   121   String of string * int |                  (*text, length*)
   121   String of output * int |                  (*text, length*)
   122   Break of bool * int;                      (*mandatory flag, width if not taken*)
   122   Break of bool * int;                      (*mandatory flag, width if not taken*)
   123 
   123 
   124 fun length (Block (_, _, _, len)) = len
   124 fun length (Block (_, _, _, len)) = len
   125   | length (String (_, len)) = len
   125   | length (String (_, len)) = len
   126   | length (Break (_, wd)) = wd;
   126   | length (Break (_, wd)) = wd;