aboutsummaryrefslogtreecommitdiffhomepage
path: root/toplevel
diff options
context:
space:
mode:
authorGravatar Emilio Jesus Gallego Arias <e+git@x80.org>2018-04-01 01:15:22 +0200
committerGravatar Emilio Jesus Gallego Arias <e+git@x80.org>2018-04-01 01:23:50 +0200
commit8b15eee6125f7f8596f17e9c982fb944a5e3f9be (patch)
tree925e8278a09b12a38108332f4872c1d434080110 /toplevel
parent2d2d16430822f1768ce4f3c62ef0750b94e4747f (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.ml7
-rw-r--r--toplevel/g_toplevel.ml44
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