diff options
author | Emilio Jesus Gallego Arias <e+git@x80.org> | 2018-04-01 01:15:22 +0200 |
---|---|---|
committer | Emilio Jesus Gallego Arias <e+git@x80.org> | 2018-04-01 01:23:50 +0200 |
commit | 8b15eee6125f7f8596f17e9c982fb944a5e3f9be (patch) | |
tree | 925e8278a09b12a38108332f4872c1d434080110 /toplevel | |
parent | 2d2d16430822f1768ce4f3c62ef0750b94e4747f (diff) |
[stm] Move VernacBacktrack to the toplevel.
This command is legacy, equivalent to `EditAt` and only used by
Emacs. We move it to the toplevel so we can kill some legacy code and
in particular the `part_of_script` hack.
Diffstat (limited to 'toplevel')
-rw-r--r-- | toplevel/coqloop.ml | 7 | ||||
-rw-r--r-- | toplevel/g_toplevel.ml4 | 4 |
2 files changed, 11 insertions, 0 deletions
diff --git a/toplevel/coqloop.ml b/toplevel/coqloop.ml index 64d839f18..371be20d2 100644 --- a/toplevel/coqloop.ml +++ b/toplevel/coqloop.ml @@ -338,6 +338,13 @@ let rec vernac_loop ~state = try let input = top_buffer.tokens in match read_sentence ~state input with + | {v=VernacBacktrack(bid,_,_)} -> + let bid = Stateid.of_int bid in + let doc, res = Stm.edit_at ~doc:state.doc bid in + assert (res = `NewTip); + let state = { state with doc; sid = bid } in + vernac_loop ~state + | {v=VernacQuit} -> exit 0 | {v=VernacDrop} -> diff --git a/toplevel/g_toplevel.ml4 b/toplevel/g_toplevel.ml4 index 7526f3071..d5d558b9b 100644 --- a/toplevel/g_toplevel.ml4 +++ b/toplevel/g_toplevel.ml4 @@ -9,10 +9,12 @@ (************************************************************************) open Pcoq +open Pcoq.Prim open Vernacexpr (* Vernaculars specific to the toplevel *) type vernac_toplevel = + | VernacBacktrack of int * int * int | VernacDrop | VernacQuit | VernacControl of vernac_control @@ -31,6 +33,8 @@ GEXTEND Gram vernac_toplevel: FIRST [ [ IDENT "Drop"; "." -> CAst.make VernacDrop | IDENT "Quit"; "." -> CAst.make VernacQuit + | IDENT "Backtrack"; n = natural ; m = natural ; p = natural; "." -> + CAst.make (VernacBacktrack (n,m,p)) | cmd = main_entry -> match cmd with | None -> raise Stm.End_of_input |