let pat = self#tactic_text_pattern_of_selection in
let statement =
let loc = DisambiguateTypes.dummy_floc in
+ "\n" ^
GrafiteAstPp.pp_executable ~term_pp:(fun s -> s)
~lazy_term_pp:(fun _ -> assert false) ~obj_pp:(fun _ -> assert false)
(GrafiteAst.Tactical (loc,
GrafiteAst.Tactic (loc, GrafiteAst.Reduce (loc, kind, pat)),
Some (GrafiteAst.Semicolon loc))) in
- HLog.debug ("soon I'll evaluate: " ^ statement);
(MatitaScript.current ())#advance ~statement () in
connect_menu_item copy gui#copy;
connect_menu_item normalize (reduction_action `Normalize);
let start = buffer#get_iter_at_mark (`MARK locked_mark) in
let new_text = String.concat "" new_statements in
if statement <> None then
- buffer#insert ~iter:start new_text
- else
+ buffer#insert ~iter:start new_text
+ else begin
let s = match st with `Raw s | `Ast (_, s) -> s in
- if new_text <> String.sub s 0 parsed_len then
- begin
- let stop = start#copy#forward_chars parsed_len in
- buffer#delete ~start ~stop;
+ if new_text <> String.sub s 0 parsed_len then begin
+ buffer#delete ~start ~stop:(start#copy#forward_chars parsed_len);
buffer#insert ~iter:start new_text;
end;
+ end;
self#moveMark (String.length new_text);
(*
(match List.rev new_asts with (* advance again on punctuation *)