84 datatype symb = |
84 datatype symb = |
85 Arg of int | |
85 Arg of int | |
86 TypArg of int | |
86 TypArg of int | |
87 String of bool * string | |
87 String of bool * string | |
88 Break of int | |
88 Break of int | |
89 Block of {markup: Markup.T, consistent: bool, indent: int} * symb list; |
89 Block of Syntax_Ext.block_info * symb list; |
90 |
90 |
91 type prtabs = (string * ((symb list * int * int) list) Symtab.table) list; |
91 type prtabs = (string * ((symb list * int * int) list) Symtab.table) list; |
92 |
92 |
93 fun mode_tab prtabs mode = the_default Symtab.empty (AList.lookup (op =) prtabs mode); |
93 fun mode_tab prtabs mode = the_default Symtab.empty (AList.lookup (op =) prtabs mode); |
94 fun mode_tabs prtabs modes = map_filter (AList.lookup (op =) prtabs) (modes @ [""]); |
94 fun mode_tabs prtabs modes = map_filter (AList.lookup (op =) prtabs) (modes @ [""]); |
200 val T = |
200 val T = |
201 if do_mark |
201 if do_mark |
202 then Pretty.marks_str (m @ [Lexicon.literal_markup s], s) |
202 then Pretty.marks_str (m @ [Lexicon.literal_markup s], s) |
203 else Pretty.str s; |
203 else Pretty.str s; |
204 in (T :: Ts, args') end |
204 in (T :: Ts, args') end |
205 | synT m (Block (info, bsymbs) :: symbs, args) = |
205 | synT m (Block ({markup, consistent, unbreakable, indent}, bsymbs) :: symbs, args) = |
206 let |
206 let |
207 val (bTs, args') = synT m (bsymbs, args); |
207 val (bTs, args') = synT m (bsymbs, args); |
208 val (Ts, args'') = synT m (symbs, args'); |
208 val (Ts, args'') = synT m (symbs, args'); |
209 val T = Pretty.markup_block info bTs |> #indent info < 0 ? Pretty.unbreakable; |
209 val T = |
|
210 Pretty.markup_block {markup = markup, consistent = consistent, indent = indent} bTs |
|
211 |> unbreakable ? Pretty.unbreakable; |
210 in (T :: Ts, args'') end |
212 in (T :: Ts, args'') end |
211 | synT m (Break i :: symbs, args) = |
213 | synT m (Break i :: symbs, args) = |
212 let |
214 let |
213 val (Ts, args') = synT m (symbs, args); |
215 val (Ts, args') = synT m (symbs, args); |
214 val T = if i < 0 then Pretty.fbrk else Pretty.brk i; |
216 val T = if i < 0 then Pretty.fbrk else Pretty.brk i; |