src/Tools/Code/code_printer.ML
changeset 34178 a78b8d5b91cb
parent 34163 412cf41a92a0
child 34242 d2803c7f6d52
     1.1 --- a/src/Tools/Code/code_printer.ML	Wed Dec 23 10:09:06 2009 +0100
     1.2 +++ b/src/Tools/Code/code_printer.ML	Wed Dec 23 11:32:08 2009 +0100
     1.3 @@ -18,9 +18,12 @@
     1.4    val str: string -> Pretty.T
     1.5    val concat: Pretty.T list -> Pretty.T
     1.6    val brackets: Pretty.T list -> Pretty.T
     1.7 +  val enclose: string -> string -> Pretty.T list -> Pretty.T
     1.8 +  val enum: string -> string -> string -> Pretty.T list -> Pretty.T
     1.9 +  val enum_default: string -> string -> string -> string -> Pretty.T list -> Pretty.T
    1.10    val semicolon: Pretty.T list -> Pretty.T
    1.11    val doublesemicolon: Pretty.T list -> Pretty.T
    1.12 -  val enum_default: string -> string -> string -> string -> Pretty.T list -> Pretty.T
    1.13 +  val indent: int -> Pretty.T -> Pretty.T
    1.14    val string_of_pretty: int -> Pretty.T -> string
    1.15    val writeln_pretty: int -> Pretty.T -> unit
    1.16  
    1.17 @@ -99,11 +102,14 @@
    1.18  fun xs @| y = xs @ [y];
    1.19  val str = PrintMode.setmp [] Pretty.str;
    1.20  val concat = Pretty.block o Pretty.breaks;
    1.21 -val brackets = Pretty.enclose "(" ")" o Pretty.breaks;
    1.22 +fun enclose l r = PrintMode.setmp [] (Pretty.enclose l r);
    1.23 +val brackets = enclose "(" ")" o Pretty.breaks;
    1.24 +fun enum sep l r = PrintMode.setmp [] (Pretty.enum sep l r);
    1.25 +fun enum_default default sep l r [] = str default
    1.26 +  | enum_default default sep l r xs = enum sep l r xs;
    1.27  fun semicolon ps = Pretty.block [concat ps, str ";"];
    1.28  fun doublesemicolon ps = Pretty.block [concat ps, str ";;"];
    1.29 -fun enum_default default sep opn cls [] = str default
    1.30 -  | enum_default default sep opn cls xs = Pretty.enum sep opn cls xs;
    1.31 +fun indent i = PrintMode.setmp [] (Pretty.indent i);
    1.32  
    1.33  fun string_of_pretty width p = PrintMode.setmp [] (Pretty.setmp_margin_CRITICAL width Pretty.string_of) p ^ "\n";
    1.34  fun writeln_pretty width p = PrintMode.setmp [] (Pretty.setmp_margin_CRITICAL width Pretty.writeln) p;
    1.35 @@ -198,7 +204,7 @@
    1.36    | fixity _ _ = true;
    1.37  
    1.38  fun gen_brackify _ [p] = p
    1.39 -  | gen_brackify true (ps as _::_) = Pretty.enclose "(" ")" ps
    1.40 +  | gen_brackify true (ps as _::_) = enclose "(" ")" ps
    1.41    | gen_brackify false (ps as _::_) = Pretty.block ps;
    1.42  
    1.43  fun brackify fxy_ctxt =
    1.44 @@ -210,7 +216,7 @@
    1.45  fun brackify_block fxy_ctxt p1 ps p2 =
    1.46    let val p = Pretty.block_enclose (p1, p2) ps
    1.47    in if fixity BR fxy_ctxt
    1.48 -    then Pretty.enclose "(" ")" [p]
    1.49 +    then enclose "(" ")" [p]
    1.50      else p
    1.51    end;
    1.52