| author | wenzelm | 
| Fri, 30 Dec 2011 17:45:13 +0100 | |
| changeset 46058 | 9a790f4a72be | 
| parent 45674 | eb65c9d17e2f | 
| child 46121 | 30a69cd8a9a0 | 
| permissions | -rw-r--r-- | 
| 45670 | 1 | (* Title: Pure/PIDE/isabelle_markup.ML | 
| 23623 | 2 | Author: Makarius | 
| 3 | ||
| 45666 | 4 | Isabelle markup elements. | 
| 23623 | 5 | *) | 
| 6 | ||
| 45666 | 7 | signature ISABELLE_MARKUP = | 
| 23623 | 8 | sig | 
| 45666 | 9 | val bindingN: string val binding: Markup.T | 
| 10 | val entityN: string val entity: string -> string -> Markup.T | |
| 11 | val get_entity_kind: Markup.T -> string option | |
| 33088 
757d7787b10c
markup for formal entities, with "def" or "ref" occurrences;
 wenzelm parents: 
32738diff
changeset | 12 | val defN: string | 
| 
757d7787b10c
markup for formal entities, with "def" or "ref" occurrences;
 wenzelm parents: 
32738diff
changeset | 13 | val refN: string | 
| 23671 | 14 | val lineN: string | 
| 27794 | 15 | val offsetN: string | 
| 16 | val end_offsetN: string | |
| 23671 | 17 | val fileN: string | 
| 30221 | 18 | val idN: string | 
| 27748 | 19 | val position_properties': string list | 
| 26051 | 20 | val position_properties: string list | 
| 45666 | 21 | val positionN: string val position: Markup.T | 
| 22 | val pathN: string val path: string -> Markup.T | |
| 23644 | 23 | val indentN: string | 
| 45666 | 24 | val blockN: string val block: int -> Markup.T | 
| 23695 | 25 | val widthN: string | 
| 45666 | 26 | val breakN: string val break: int -> Markup.T | 
| 27 | val fbreakN: string val fbreak: Markup.T | |
| 28 | val hiddenN: string val hidden: Markup.T | |
| 43548 
f231a7594e54
type classes: entity markup instead of old-style token markup;
 wenzelm parents: 
43547diff
changeset | 29 | val classN: string | 
| 43552 | 30 | val typeN: string | 
| 31 | val constantN: string | |
| 45666 | 32 | val fixedN: string val fixed: string -> Markup.T | 
| 33 | val dynamic_factN: string val dynamic_fact: string -> Markup.T | |
| 34 | val tfreeN: string val tfree: Markup.T | |
| 35 | val tvarN: string val tvar: Markup.T | |
| 36 | val freeN: string val free: Markup.T | |
| 37 | val skolemN: string val skolem: Markup.T | |
| 38 | val boundN: string val bound: Markup.T | |
| 39 | val varN: string val var: Markup.T | |
| 40 | val numeralN: string val numeral: Markup.T | |
| 41 | val literalN: string val literal: Markup.T | |
| 42 | val delimiterN: string val delimiter: Markup.T | |
| 43 | val inner_stringN: string val inner_string: Markup.T | |
| 44 | val inner_commentN: string val inner_comment: Markup.T | |
| 45 | val token_rangeN: string val token_range: Markup.T | |
| 46 | val sortN: string val sort: Markup.T | |
| 47 | val typN: string val typ: Markup.T | |
| 48 | val termN: string val term: Markup.T | |
| 49 | val propN: string val prop: Markup.T | |
| 50 | val typingN: string val typing: Markup.T | |
| 51 | val ML_keywordN: string val ML_keyword: Markup.T | |
| 52 | val ML_delimiterN: string val ML_delimiter: Markup.T | |
| 53 | val ML_tvarN: string val ML_tvar: Markup.T | |
| 54 | val ML_numeralN: string val ML_numeral: Markup.T | |
| 55 | val ML_charN: string val ML_char: Markup.T | |
| 56 | val ML_stringN: string val ML_string: Markup.T | |
| 57 | val ML_commentN: string val ML_comment: Markup.T | |
| 58 | val ML_malformedN: string val ML_malformed: Markup.T | |
| 42327 
7c7cc7590eb3
Name_Space.entry_markup: keep def position as separate properties;
 wenzelm parents: 
42135diff
changeset | 59 | val ML_defN: string | 
| 
7c7cc7590eb3
Name_Space.entry_markup: keep def position as separate properties;
 wenzelm parents: 
42135diff
changeset | 60 | val ML_openN: string | 
| 
7c7cc7590eb3
Name_Space.entry_markup: keep def position as separate properties;
 wenzelm parents: 
42135diff
changeset | 61 | val ML_structN: string | 
| 45666 | 62 | val ML_typingN: string val ML_typing: Markup.T | 
| 63 | val ML_sourceN: string val ML_source: Markup.T | |
| 64 | val doc_sourceN: string val doc_source: Markup.T | |
| 65 | val antiqN: string val antiq: Markup.T | |
| 43560 
d1650e3720fd
ML antiquotations are managed as theory data, with proper name space and entity markup;
 wenzelm parents: 
43552diff
changeset | 66 | val ML_antiquotationN: string | 
| 43564 
9864182c6bad
document antiquotations are managed as theory data, with proper name space and entity markup;
 wenzelm parents: 
43560diff
changeset | 67 | val doc_antiquotationN: string | 
| 
9864182c6bad
document antiquotations are managed as theory data, with proper name space and entity markup;
 wenzelm parents: 
43560diff
changeset | 68 | val doc_antiquotation_optionN: string | 
| 45666 | 69 | val keyword_declN: string val keyword_decl: string -> Markup.T | 
| 70 | val command_declN: string val command_decl: string -> string -> Markup.T | |
| 71 | val keywordN: string val keyword: Markup.T | |
| 72 | val operatorN: string val operator: Markup.T | |
| 73 | val commandN: string val command: Markup.T | |
| 74 | val stringN: string val string: Markup.T | |
| 75 | val altstringN: string val altstring: Markup.T | |
| 76 | val verbatimN: string val verbatim: Markup.T | |
| 77 | val commentN: string val comment: Markup.T | |
| 78 | val controlN: string val control: Markup.T | |
| 79 | val malformedN: string val malformed: Markup.T | |
| 80 | val tokenN: string val token: Properties.T -> Markup.T | |
| 81 | val command_spanN: string val command_span: string -> Markup.T | |
| 82 | val ignored_spanN: string val ignored_span: Markup.T | |
| 83 | val malformed_spanN: string val malformed_span: Markup.T | |
| 84 | val loaded_theoryN: string val loaded_theory: string -> Markup.T | |
| 45674 | 85 | val elapsedN: string | 
| 86 | val cpuN: string | |
| 87 | val gcN: string | |
| 88 | val timingN: string val timing: Timing.timing -> Markup.T | |
| 38721 
ca8b14fa0d0d
added some proof state markup, notably number of subgoals (e.g. for indentation);
 wenzelm parents: 
38474diff
changeset | 89 | val subgoalsN: string | 
| 45666 | 90 | val proof_stateN: string val proof_state: int -> Markup.T | 
| 91 | val stateN: string val state: Markup.T | |
| 92 | val subgoalN: string val subgoal: Markup.T | |
| 93 | val sendbackN: string val sendback: Markup.T | |
| 94 | val hiliteN: string val hilite: Markup.T | |
| 29417 | 95 | val taskN: string | 
| 45666 | 96 | val forkedN: string val forked: Markup.T | 
| 97 | val joinedN: string val joined: Markup.T | |
| 98 | val failedN: string val failed: Markup.T | |
| 99 | val finishedN: string val finished: Markup.T | |
| 38871 | 100 | val serialN: string | 
| 45666 | 101 | val legacyN: string val legacy: Markup.T | 
| 102 | val promptN: string val prompt: Markup.T | |
| 103 | val readyN: string val ready: Markup.T | |
| 104 | val reportN: string val report: Markup.T | |
| 105 | val no_reportN: string val no_report: Markup.T | |
| 106 | val badN: string val bad: Markup.T | |
| 43748 | 107 | val functionN: string | 
| 44661 
383c9d758a56
raw message function "assign_execs" avoids full overhead of decoding and caching message body;
 wenzelm parents: 
44549diff
changeset | 108 | val assign_execs: Properties.T | 
| 44676 | 109 | val removed_versions: Properties.T | 
| 43748 | 110 | val invoke_scala: string -> string -> Properties.T | 
| 44298 
b8f8488704e2
Future.promise: explicit abort operation (like uninterruptible future job);
 wenzelm parents: 
43797diff
changeset | 111 | val cancel_scala: string -> Properties.T | 
| 23623 | 112 | end; | 
| 113 | ||
| 45666 | 114 | structure Isabelle_Markup: ISABELLE_MARKUP = | 
| 23623 | 115 | struct | 
| 116 | ||
| 30221 | 117 | (** markup elements **) | 
| 118 | ||
| 45666 | 119 | fun markup_elem elem = (elem, (elem, []): Markup.T); | 
| 120 | fun markup_string elem prop = (elem, fn s => (elem, [(prop, s)]): Markup.T); | |
| 121 | fun markup_int elem prop = (elem, fn i => (elem, [(prop, Markup.print_int i)]): Markup.T); | |
| 23671 | 122 | |
| 23658 | 123 | |
| 33088 
757d7787b10c
markup for formal entities, with "def" or "ref" occurrences;
 wenzelm parents: 
32738diff
changeset | 124 | (* formal entities *) | 
| 
757d7787b10c
markup for formal entities, with "def" or "ref" occurrences;
 wenzelm parents: 
32738diff
changeset | 125 | |
| 43547 
f3a8476285c6
clarified Binding.pretty/print: no quotes, only markup -- Binding.str_of is rendered obsolete;
 wenzelm parents: 
43432diff
changeset | 126 | val (bindingN, binding) = markup_elem "binding"; | 
| 42135 | 127 | |
| 128 | val entityN = "entity"; | |
| 45666 | 129 | fun entity kind name = (entityN, [(Markup.nameN, name), (Markup.kindN, kind)]); | 
| 33088 
757d7787b10c
markup for formal entities, with "def" or "ref" occurrences;
 wenzelm parents: 
32738diff
changeset | 130 | |
| 43548 
f231a7594e54
type classes: entity markup instead of old-style token markup;
 wenzelm parents: 
43547diff
changeset | 131 | fun get_entity_kind (name, props) = | 
| 45666 | 132 | if name = entityN then AList.lookup (op =) props Markup.kindN | 
| 43548 
f231a7594e54
type classes: entity markup instead of old-style token markup;
 wenzelm parents: 
43547diff
changeset | 133 | else NONE; | 
| 
f231a7594e54
type classes: entity markup instead of old-style token markup;
 wenzelm parents: 
43547diff
changeset | 134 | |
| 33088 
757d7787b10c
markup for formal entities, with "def" or "ref" occurrences;
 wenzelm parents: 
32738diff
changeset | 135 | val defN = "def"; | 
| 
757d7787b10c
markup for formal entities, with "def" or "ref" occurrences;
 wenzelm parents: 
32738diff
changeset | 136 | val refN = "ref"; | 
| 
757d7787b10c
markup for formal entities, with "def" or "ref" occurrences;
 wenzelm parents: 
32738diff
changeset | 137 | |
| 
757d7787b10c
markup for formal entities, with "def" or "ref" occurrences;
 wenzelm parents: 
32738diff
changeset | 138 | |
| 23671 | 139 | (* position *) | 
| 140 | ||
| 141 | val lineN = "line"; | |
| 27794 | 142 | val offsetN = "offset"; | 
| 143 | val end_offsetN = "end_offset"; | |
| 23671 | 144 | val fileN = "file"; | 
| 25816 | 145 | val idN = "id"; | 
| 23671 | 146 | |
| 41484 | 147 | val position_properties' = [fileN, idN]; | 
| 43710 
7270ae921cf2
discontinued odd Position.column -- left-over from attempts at PGIP implementation;
 wenzelm parents: 
43684diff
changeset | 148 | val position_properties = [lineN, offsetN, end_offsetN] @ position_properties'; | 
| 27748 | 149 | |
| 25552 | 150 | val (positionN, position) = markup_elem "position"; | 
| 26255 | 151 | |
| 23644 | 152 | |
| 43593 | 153 | (* path *) | 
| 154 | ||
| 45666 | 155 | val (pathN, path) = markup_string "path" Markup.nameN; | 
| 43593 | 156 | |
| 157 | ||
| 23644 | 158 | (* pretty printing *) | 
| 159 | ||
| 160 | val indentN = "indent"; | |
| 161 | val (blockN, block) = markup_int "block" indentN; | |
| 162 | ||
| 163 | val widthN = "width"; | |
| 164 | val (breakN, break) = markup_int "break" widthN; | |
| 165 | ||
| 25552 | 166 | val (fbreakN, fbreak) = markup_elem "fbreak"; | 
| 23637 | 167 | |
| 168 | ||
| 33985 | 169 | (* hidden text *) | 
| 170 | ||
| 171 | val (hiddenN, hidden) = markup_elem "hidden"; | |
| 172 | ||
| 173 | ||
| 23623 | 174 | (* logical entities *) | 
| 175 | ||
| 43548 
f231a7594e54
type classes: entity markup instead of old-style token markup;
 wenzelm parents: 
43547diff
changeset | 176 | val classN = "class"; | 
| 43552 | 177 | val typeN = "type"; | 
| 178 | val constantN = "constant"; | |
| 179 | ||
| 45666 | 180 | val (fixedN, fixed) = markup_string "fixed" Markup.nameN; | 
| 181 | val (dynamic_factN, dynamic_fact) = markup_string "dynamic_fact" Markup.nameN; | |
| 23623 | 182 | |
| 183 | ||
| 184 | (* inner syntax *) | |
| 185 | ||
| 25552 | 186 | val (tfreeN, tfree) = markup_elem "tfree"; | 
| 187 | val (tvarN, tvar) = markup_elem "tvar"; | |
| 188 | val (freeN, free) = markup_elem "free"; | |
| 189 | val (skolemN, skolem) = markup_elem "skolem"; | |
| 190 | val (boundN, bound) = markup_elem "bound"; | |
| 191 | val (varN, var) = markup_elem "var"; | |
| 29318 
6337d1cb2ba0
added numeral, which supercedes num, xnum, float;
 wenzelm parents: 
28904diff
changeset | 192 | val (numeralN, numeral) = markup_elem "numeral"; | 
| 27804 | 193 | val (literalN, literal) = markup_elem "literal"; | 
| 43432 
224006e5ac46
inner literal/delimiter corresponds to outer keyword/operator;
 wenzelm parents: 
42492diff
changeset | 194 | val (delimiterN, delimiter) = markup_elem "delimiter"; | 
| 29318 
6337d1cb2ba0
added numeral, which supercedes num, xnum, float;
 wenzelm parents: 
28904diff
changeset | 195 | val (inner_stringN, inner_string) = markup_elem "inner_string"; | 
| 27883 | 196 | val (inner_commentN, inner_comment) = markup_elem "inner_comment"; | 
| 23719 | 197 | |
| 39168 
e3ac771235f7
report token range after inner parse error -- often provides important clues about misunderstanding concerning lexical phase;
 wenzelm parents: 
38887diff
changeset | 198 | val (token_rangeN, token_range) = markup_elem "token_range"; | 
| 
e3ac771235f7
report token range after inner parse error -- often provides important clues about misunderstanding concerning lexical phase;
 wenzelm parents: 
38887diff
changeset | 199 | |
| 25552 | 200 | val (sortN, sort) = markup_elem "sort"; | 
| 201 | val (typN, typ) = markup_elem "typ"; | |
| 202 | val (termN, term) = markup_elem "term"; | |
| 27818 | 203 | val (propN, prop) = markup_elem "prop"; | 
| 27748 | 204 | |
| 45445 
41e641a870de
pass term positions into check phase, where resulting types are reported accordingly, and eventually shown as tooltips;
 wenzelm parents: 
44706diff
changeset | 205 | val (typingN, typing) = markup_elem "typing"; | 
| 
41e641a870de
pass term positions into check phase, where resulting types are reported accordingly, and eventually shown as tooltips;
 wenzelm parents: 
44706diff
changeset | 206 | |
| 23623 | 207 | |
| 30614 | 208 | (* ML syntax *) | 
| 209 | ||
| 210 | val (ML_keywordN, ML_keyword) = markup_elem "ML_keyword"; | |
| 37195 | 211 | val (ML_delimiterN, ML_delimiter) = markup_elem "ML_delimiter"; | 
| 30614 | 212 | val (ML_tvarN, ML_tvar) = markup_elem "ML_tvar"; | 
| 213 | val (ML_numeralN, ML_numeral) = markup_elem "ML_numeral"; | |
| 214 | val (ML_charN, ML_char) = markup_elem "ML_char"; | |
| 215 | val (ML_stringN, ML_string) = markup_elem "ML_string"; | |
| 216 | val (ML_commentN, ML_comment) = markup_elem "ML_comment"; | |
| 217 | val (ML_malformedN, ML_malformed) = markup_elem "ML_malformed"; | |
| 218 | ||
| 42327 
7c7cc7590eb3
Name_Space.entry_markup: keep def position as separate properties;
 wenzelm parents: 
42135diff
changeset | 219 | val ML_defN = "ML_def"; | 
| 
7c7cc7590eb3
Name_Space.entry_markup: keep def position as separate properties;
 wenzelm parents: 
42135diff
changeset | 220 | val ML_openN = "ML_open"; | 
| 
7c7cc7590eb3
Name_Space.entry_markup: keep def position as separate properties;
 wenzelm parents: 
42135diff
changeset | 221 | val ML_structN = "ML_struct"; | 
| 30702 | 222 | val (ML_typingN, ML_typing) = markup_elem "ML_typing"; | 
| 223 | ||
| 30614 | 224 | |
| 27875 | 225 | (* embedded source text *) | 
| 226 | ||
| 227 | val (ML_sourceN, ML_source) = markup_elem "ML_source"; | |
| 228 | val (doc_sourceN, doc_source) = markup_elem "doc_source"; | |
| 229 | ||
| 27879 | 230 | val (antiqN, antiq) = markup_elem "antiq"; | 
| 43560 
d1650e3720fd
ML antiquotations are managed as theory data, with proper name space and entity markup;
 wenzelm parents: 
43552diff
changeset | 231 | val ML_antiquotationN = "ML antiquotation"; | 
| 43564 
9864182c6bad
document antiquotations are managed as theory data, with proper name space and entity markup;
 wenzelm parents: 
43560diff
changeset | 232 | val doc_antiquotationN = "document antiquotation"; | 
| 
9864182c6bad
document antiquotations are managed as theory data, with proper name space and entity markup;
 wenzelm parents: 
43560diff
changeset | 233 | val doc_antiquotation_optionN = "document antiquotation option"; | 
| 27879 | 234 | |
| 27875 | 235 | |
| 23623 | 236 | (* outer syntax *) | 
| 237 | ||
| 45666 | 238 | val (keyword_declN, keyword_decl) = markup_string "keyword_decl" Markup.nameN; | 
| 24870 | 239 | |
| 240 | val command_declN = "command_decl"; | |
| 45666 | 241 | |
| 242 | fun command_decl name kind : Markup.T = | |
| 243 | (command_declN, [(Markup.nameN, name), (Markup.kindN, kind)]); | |
| 24870 | 244 | |
| 37193 | 245 | val (keywordN, keyword) = markup_elem "keyword"; | 
| 37192 | 246 | val (operatorN, operator) = markup_elem "operator"; | 
| 37193 | 247 | val (commandN, command) = markup_elem "command"; | 
| 25552 | 248 | val (stringN, string) = markup_elem "string"; | 
| 249 | val (altstringN, altstring) = markup_elem "altstring"; | |
| 250 | val (verbatimN, verbatim) = markup_elem "verbatim"; | |
| 251 | val (commentN, comment) = markup_elem "comment"; | |
| 252 | val (controlN, control) = markup_elem "control"; | |
| 253 | val (malformedN, malformed) = markup_elem "malformed"; | |
| 23719 | 254 | |
| 38229 | 255 | val tokenN = "token"; | 
| 256 | fun token props = (tokenN, props); | |
| 27851 | 257 | |
| 45666 | 258 | val (command_spanN, command_span) = markup_string "command_span" Markup.nameN; | 
| 27660 | 259 | val (ignored_spanN, ignored_span) = markup_elem "ignored_span"; | 
| 27836 | 260 | val (malformed_spanN, malformed_span) = markup_elem "malformed_span"; | 
| 23719 | 261 | |
| 23623 | 262 | |
| 43673 
29eb1cd29961
Thy_Info.dependencies: ignore already loaded theories, according to initial prover session status;
 wenzelm parents: 
43665diff
changeset | 263 | (* theory loader *) | 
| 
29eb1cd29961
Thy_Info.dependencies: ignore already loaded theories, according to initial prover session status;
 wenzelm parents: 
43665diff
changeset | 264 | |
| 45666 | 265 | val (loaded_theoryN, loaded_theory) = markup_string "loaded_theory" Markup.nameN; | 
| 40394 
6dcb6cbf0719
somewhat more uniform timing markup in ML vs. Scala;
 wenzelm parents: 
40391diff
changeset | 266 | |
| 
6dcb6cbf0719
somewhat more uniform timing markup in ML vs. Scala;
 wenzelm parents: 
40391diff
changeset | 267 | |
| 45674 | 268 | (* timing *) | 
| 269 | ||
| 270 | val timingN = "timing"; | |
| 271 | val elapsedN = "elapsed"; | |
| 272 | val cpuN = "cpu"; | |
| 273 | val gcN = "gc"; | |
| 274 | ||
| 275 | fun timing {elapsed, cpu, gc} =
 | |
| 276 | (timingN, | |
| 277 | [(elapsedN, Time.toString elapsed), | |
| 278 | (cpuN, Time.toString cpu), | |
| 279 | (gcN, Time.toString gc)]); | |
| 280 | ||
| 281 | ||
| 40394 
6dcb6cbf0719
somewhat more uniform timing markup in ML vs. Scala;
 wenzelm parents: 
40391diff
changeset | 282 | (* toplevel *) | 
| 40391 
b0dafbfc05b7
explicit "timing" status for toplevel transactions;
 wenzelm parents: 
40131diff
changeset | 283 | |
| 38721 
ca8b14fa0d0d
added some proof state markup, notably number of subgoals (e.g. for indentation);
 wenzelm parents: 
38474diff
changeset | 284 | val subgoalsN = "subgoals"; | 
| 
ca8b14fa0d0d
added some proof state markup, notably number of subgoals (e.g. for indentation);
 wenzelm parents: 
38474diff
changeset | 285 | val (proof_stateN, proof_state) = markup_int "proof_state" subgoalsN; | 
| 
ca8b14fa0d0d
added some proof state markup, notably number of subgoals (e.g. for indentation);
 wenzelm parents: 
38474diff
changeset | 286 | |
| 25552 | 287 | val (stateN, state) = markup_elem "state"; | 
| 288 | val (subgoalN, subgoal) = markup_elem "subgoal"; | |
| 289 | val (sendbackN, sendback) = markup_elem "sendback"; | |
| 290 | val (hiliteN, hilite) = markup_elem "hilite"; | |
| 291 | ||
| 292 | ||
| 27606 | 293 | (* command status *) | 
| 294 | ||
| 29417 | 295 | val taskN = "task"; | 
| 296 | ||
| 37186 
349e9223c685
explicit markup for forked goals, as indicated by Goal.fork;
 wenzelm parents: 
34242diff
changeset | 297 | val (forkedN, forked) = markup_elem "forked"; | 
| 
349e9223c685
explicit markup for forked goals, as indicated by Goal.fork;
 wenzelm parents: 
34242diff
changeset | 298 | val (joinedN, joined) = markup_elem "joined"; | 
| 38429 
9951852fae91
simplified command status: interpret stacked markup on demand;
 wenzelm parents: 
38414diff
changeset | 299 | |
| 27615 | 300 | val (failedN, failed) = markup_elem "failed"; | 
| 27606 | 301 | val (finishedN, finished) = markup_elem "finished"; | 
| 302 | ||
| 29488 | 303 | |
| 27969 | 304 | (* messages *) | 
| 305 | ||
| 38871 | 306 | val serialN = "serial"; | 
| 27969 | 307 | |
| 44549 | 308 | val (legacyN, legacy) = markup_elem "legacy"; | 
| 27969 | 309 | val (promptN, prompt) = markup_elem "prompt"; | 
| 31384 
ce169bd37fc0
IsabelleProcess: emit status "ready" after initialization and reports;
 wenzelm parents: 
30702diff
changeset | 310 | val (readyN, ready) = markup_elem "ready"; | 
| 27969 | 311 | |
| 38887 
1261481ef5e5
Command.State: add reported positions to markup tree, according main message position or Markup.binding/entity/report occurrences in body;
 wenzelm parents: 
38871diff
changeset | 312 | val (reportN, report) = markup_elem "report"; | 
| 39439 
1c294d150ded
eliminated markup "location" in favour of more explicit "no_report", which is actually deleted from messages;
 wenzelm parents: 
39171diff
changeset | 313 | val (no_reportN, no_report) = markup_elem "no_report"; | 
| 38887 
1261481ef5e5
Command.State: add reported positions to markup tree, according main message position or Markup.binding/entity/report occurrences in body;
 wenzelm parents: 
38871diff
changeset | 314 | |
| 39171 
525a13b9ac74
highlight bad range of nested error (here from inner parsing);
 wenzelm parents: 
39168diff
changeset | 315 | val (badN, bad) = markup_elem "bad"; | 
| 
525a13b9ac74
highlight bad range of nested error (here from inner parsing);
 wenzelm parents: 
39168diff
changeset | 316 | |
| 27969 | 317 | |
| 43748 | 318 | (* raw message functions *) | 
| 319 | ||
| 320 | val functionN = "function" | |
| 321 | ||
| 44661 
383c9d758a56
raw message function "assign_execs" avoids full overhead of decoding and caching message body;
 wenzelm parents: 
44549diff
changeset | 322 | val assign_execs = [(functionN, "assign_execs")]; | 
| 44676 | 323 | val removed_versions = [(functionN, "removed_versions")]; | 
| 44661 
383c9d758a56
raw message function "assign_execs" avoids full overhead of decoding and caching message body;
 wenzelm parents: 
44549diff
changeset | 324 | |
| 45666 | 325 | fun invoke_scala name id = [(functionN, "invoke_scala"), (Markup.nameN, name), (idN, id)]; | 
| 44298 
b8f8488704e2
Future.promise: explicit abort operation (like uninterruptible future job);
 wenzelm parents: 
43797diff
changeset | 326 | fun cancel_scala id = [(functionN, "cancel_scala"), (idN, id)]; | 
| 43748 | 327 | |
| 23623 | 328 | end; |