From 232ed8f679d00c26b93b9724c4308e5818b31690 Mon Sep 17 00:00:00 2001 From: Julien Girard <julien.girard2@cea.fr> Date: Thu, 18 Apr 2019 17:48:47 +0200 Subject: [PATCH] [WIP][gui/project] unsuccessful attented to solve issue 181 --- src/kernel_services/plugin_entry_points/kernel.ml | 5 ++++- src/libraries/project/project.ml | 3 +++ src/libraries/project/project.mli | 4 ++++ src/plugins/gui/design.ml | 4 +++- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/kernel_services/plugin_entry_points/kernel.ml b/src/kernel_services/plugin_entry_points/kernel.ml index 6b53e263444..23b95bce9a5 100644 --- a/src/kernel_services/plugin_entry_points/kernel.ml +++ b/src/kernel_services/plugin_entry_points/kernel.ml @@ -1523,8 +1523,11 @@ let _ = let () = Cmdline.run_after_configuring_stage (fun () -> + feedback "BEFORE Project.remove"; Remove_projects.iter (fun project -> Project.remove ~project ()); - Remove_projects.clear ()) + feedback "AFTER Project.remove"; + Remove_projects.unsafe_set Project.Datatype.Set.empty; + feedback "AFTER Clearing option") (* ************************************************************************* *) (** {2 Others options} *) diff --git a/src/libraries/project/project.ml b/src/libraries/project/project.ml index 55280721f01..f761614035b 100644 --- a/src/libraries/project/project.ml +++ b/src/libraries/project/project.ml @@ -361,6 +361,9 @@ let journalized_set_current = let set_current ?(on=false) ?(selection=State_selection.full) p = if not (equal p (current ())) then journalized_set_current on selection p +let set_current_as_last_created () = + Extlib.may (fun p -> set_current p) !last_created_by_copy_ref + (** Indicates if we should keep [p] as the current project when calling {!on p}. *) let keep_current: bool ref = ref false diff --git a/src/libraries/project/project.mli b/src/libraries/project/project.mli index d24b9b72f02..ec2f4d49c9b 100644 --- a/src/libraries/project/project.mli +++ b/src/libraries/project/project.mli @@ -142,6 +142,10 @@ val set_keep_current: bool -> unit of the current {!on}) iff [b] is [true]. @since Aluminium-20160501 *) +(**/**) +val set_current_as_last_created: unit -> unit +(**/**) + val copy: ?selection:State_selection.t -> ?src:t -> t -> unit (** Copy a project into another one. Default project for [src] is [current ()]. Replace the destination by [src]. diff --git a/src/plugins/gui/design.ml b/src/plugins/gui/design.ml index bb11d8d5687..d5693f4e0b9 100644 --- a/src/plugins/gui/design.ml +++ b/src/plugins/gui/design.ml @@ -1863,7 +1863,9 @@ let toplevel play = Task.on_idle := (fun f -> ignore (Glib.Timeout.add ~ms:50 ~callback:f)); let project_name = Gui_parameters.Project_name.get () in - if project_name <> "" then + if project_name = "" then + Project.set_current_as_last_created () + else Project.set_current (Project.from_unique_name project_name); Ast.compute () with e -> (* An error occurred: we need to enforce the splash screen -- GitLab