equal
deleted
inserted
replaced
63 val local_setup: binding -> (Proof.context -> method) context_parser -> string -> |
63 val local_setup: binding -> (Proof.context -> method) context_parser -> string -> |
64 local_theory -> local_theory |
64 local_theory -> local_theory |
65 val method_setup: bstring * Position.T -> Input.source -> string -> local_theory -> local_theory |
65 val method_setup: bstring * Position.T -> Input.source -> string -> local_theory -> local_theory |
66 val method: Proof.context -> Token.src -> Proof.context -> method |
66 val method: Proof.context -> Token.src -> Proof.context -> method |
67 val method_closure: Proof.context -> Token.src -> Token.src |
67 val method_closure: Proof.context -> Token.src -> Token.src |
|
68 val closure: bool Config.T |
68 val method_cmd: Proof.context -> Token.src -> Proof.context -> method |
69 val method_cmd: Proof.context -> Token.src -> Proof.context -> method |
69 val evaluate: text -> Proof.context -> method |
70 val evaluate: text -> Proof.context -> method |
70 type modifier = {init: Proof.context -> Proof.context, attribute: attribute, pos: Position.T} |
71 type modifier = {init: Proof.context -> Proof.context, attribute: attribute, pos: Position.T} |
71 val modifier: attribute -> Position.T -> modifier |
72 val modifier: attribute -> Position.T -> modifier |
72 val section: modifier parser list -> declaration context_parser |
73 val section: modifier parser list -> declaration context_parser |
393 |
394 |
394 fun method ctxt = |
395 fun method ctxt = |
395 let val table = get_methods (Context.Proof ctxt) |
396 let val table = get_methods (Context.Proof ctxt) |
396 in fn src => #1 (Name_Space.get table (#1 (Token.name_of_src src))) src end; |
397 in fn src => #1 (Name_Space.get table (#1 (Token.name_of_src src))) src end; |
397 |
398 |
398 fun method_closure ctxt0 src0 = |
399 fun method_closure ctxt src = |
399 let |
400 let |
400 val src1 = check_src ctxt0 src0; |
401 val src' = Token.init_assignable_src src; |
401 val src2 = Token.init_assignable_src src1; |
402 val ctxt' = Context_Position.not_really ctxt; |
402 val ctxt = Context_Position.not_really ctxt0; |
403 val _ = Seq.pull (method ctxt' src' ctxt' [] (Goal.protect 0 Drule.dummy_thm)); |
403 val _ = Seq.pull (method ctxt src2 ctxt [] (Goal.protect 0 Drule.dummy_thm)); |
404 in Token.closure_src src' end; |
404 in Token.closure_src src2 end; |
405 |
405 |
406 val closure = Config.bool (Config.declare ("Method.closure", @{here}) (K (Config.Bool true))); |
406 fun method_cmd ctxt = method ctxt o method_closure ctxt; |
407 |
|
408 fun method_cmd ctxt = |
|
409 check_src ctxt #> |
|
410 Config.get ctxt closure ? method_closure ctxt #> |
|
411 method ctxt; |
407 |
412 |
408 |
413 |
409 (* evaluate method text *) |
414 (* evaluate method text *) |
410 |
415 |
411 local |
416 local |