- (*in
- let time2 = Unix.gettimeofday () in
- HLog.debug ("... done in " ^ string_of_float (time2 -. time1) ^ "s");
- let new_statuses, new_statements =
- let statuses, texts = List.split entries in
- statuses, texts
- in
- history <- new_statuses @ history;
- statements <- new_statements @ statements;
- let start = buffer#get_iter_at_mark (`MARK locked_mark) in
- let new_text = String.concat "" (List.rev new_statements) in
- if statement <> None then
- buffer#insert ~iter:start new_text
- else begin
- let parsed_text = String.sub s 0 parsed_len in
- if new_text <> parsed_text then begin
- let stop = start#copy#forward_chars (Glib.Utf8.length parsed_text) in
- buffer#delete ~start ~stop;
- buffer#insert ~iter:start new_text;
- end;
- end;
- self#moveMark (Glib.Utf8.length new_text);
- buffer#insert ~iter:(buffer#get_iter_at_mark (`MARK locked_mark)) newtext*)
+;;
+
+let retract () =
+ let new_history,new_status =
+ match !history with
+ _::(status::_ as history) ->
+ history, status
+ | [_] -> failwith "retract"
+ | _ -> assert false in
+ NCicLibrary.time_travel !status;
+ history := new_history;
+ status := new_status;
+ html_of_status !status