let open_view topwin _ ?(attributes=[]) _ =
  match !view with
  | Some v -> `Use_view (v:> Ed_view.gui_view)
  | None ->
      let v = new outputview ~attributes topwin on_view_destroy in
      ignore(v#source_view#connect#destroy (fun () -> on_view_destroy v));
      view := Some v;
      v#print (Buffer.contents delayed_text);
      Buffer.reset delayed_text;
      `New_view (v :> Ed_view.gui_view)