equal
deleted
inserted
replaced
7 |
7 |
8 signature MARKUP = |
8 signature MARKUP = |
9 sig |
9 sig |
10 type property = string * string |
10 type property = string * string |
11 type T = string * property list |
11 type T = string * property list |
|
12 val none: T |
|
13 val properties: (string * string) list -> T -> T |
12 val nameN: string |
14 val nameN: string |
13 val kindN: string |
15 val kindN: string |
14 val none: T |
|
15 val properties: (string * string) list -> T -> T |
|
16 val lineN: string |
16 val lineN: string |
17 val fileN: string |
17 val fileN: string |
18 val positionN: string val position: T |
18 val positionN: string val position: T |
19 val indentN: string |
19 val indentN: string |
|
20 val blockN: string val block: int -> T |
20 val widthN: string |
21 val widthN: string |
21 val blockN: string val block: int -> T |
|
22 val breakN: string val break: int -> T |
22 val breakN: string val break: int -> T |
23 val fbreakN: string val fbreak: T |
23 val fbreakN: string val fbreak: T |
24 val classN: string val class: string -> T |
24 val classN: string val class: string -> T |
25 val tyconN: string val tycon: string -> T |
25 val tyconN: string val tycon: string -> T |
26 val constN: string val const: string -> T |
26 val constN: string val const: string -> T |
30 val termN: string val term: T |
30 val termN: string val term: T |
31 val keywordN: string val keyword: string -> T |
31 val keywordN: string val keyword: string -> T |
32 val commandN: string val command: string -> T |
32 val commandN: string val command: string -> T |
33 val promptN: string val prompt: T |
33 val promptN: string val prompt: T |
34 val stateN: string val state: T |
34 val stateN: string val state: T |
35 val no_stateN: string val no_state: T |
|
36 val subgoalN: string val subgoal: T |
35 val subgoalN: string val subgoal: T |
|
36 val default_output: T -> output * output |
|
37 val output: T -> output * output |
|
38 val add_mode: string -> (T -> output * output) -> unit |
37 end; |
39 end; |
38 |
40 |
39 structure Markup: MARKUP = |
41 structure Markup: MARKUP = |
40 struct |
42 struct |
41 |
43 |
99 |
101 |
100 (* toplevel *) |
102 (* toplevel *) |
101 |
103 |
102 val (promptN, prompt) = markup "prompt"; |
104 val (promptN, prompt) = markup "prompt"; |
103 val (stateN, state) = markup "state"; |
105 val (stateN, state) = markup "state"; |
104 val (no_stateN, no_state) = markup "no_state"; |
|
105 val (subgoalN, subgoal) = markup "subgoal"; |
106 val (subgoalN, subgoal) = markup "subgoal"; |
106 |
107 |
|
108 |
|
109 (* print mode operations *) |
|
110 |
|
111 fun default_output (_: T) = ("", ""); |
|
112 |
|
113 local |
|
114 val default = {output = default_output}; |
|
115 val modes = ref (Symtab.make [("", default)]); |
|
116 in |
|
117 fun add_mode name output = |
|
118 change modes (Symtab.update_new (name, {output = output})); |
|
119 fun get_mode () = |
|
120 the_default default (Library.get_first (Symtab.lookup (! modes)) (! print_mode)); |
107 end; |
121 end; |
|
122 |
|
123 fun output m = |
|
124 if m = none then ("", "") |
|
125 else #output (get_mode ()) m; |
|
126 |
|
127 end; |