diff options
author | Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr> | 2015-02-15 21:02:33 +0100 |
---|---|---|
committer | Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr> | 2015-02-15 21:15:26 +0100 |
commit | 6b5bc2ceb986913bf28a08dadb1e4ef01a595a3b (patch) | |
tree | e28dd5aaf812b28f0043577e0ce3cbaf00bfc53a /ide | |
parent | 1d39965a694698c3df238fc424203c6b77b067e7 (diff) |
CoqIDE now remembers the path of the last opened project.
Fixes bug #2762.
Diffstat (limited to 'ide')
-rw-r--r-- | ide/ideutils.ml | 14 | ||||
-rw-r--r-- | ide/preferences.ml | 4 | ||||
-rw-r--r-- | ide/preferences.mli | 1 |
3 files changed, 13 insertions, 6 deletions
diff --git a/ide/ideutils.ml b/ide/ideutils.ml index 84ef8f40d..473b8dc82 100644 --- a/ide/ideutils.ml +++ b/ide/ideutils.ml @@ -132,8 +132,6 @@ let mktimer () = with Glib.GError _ -> ()); timer := None) } -let last_dir = ref "" - let filter_all_files () = GFile.filter ~name:"All" ~patterns:["*"] () @@ -142,6 +140,10 @@ let filter_coq_files () = GFile.filter ~name:"Coq source code" ~patterns:[ "*.v"] () +let current_dir () = match current.project_path with +| None -> "" +| Some dir -> dir + let select_file_for_open ~title () = let file = ref None in let file_chooser = @@ -152,14 +154,14 @@ let select_file_for_open ~title () = file_chooser#add_filter (filter_coq_files ()); file_chooser#add_filter (filter_all_files ()); file_chooser#set_default_response `OPEN; - ignore (file_chooser#set_current_folder !last_dir); + ignore (file_chooser#set_current_folder (current_dir ())); begin match file_chooser#run () with | `OPEN -> begin file := file_chooser#filename; match !file with | None -> () - | Some s -> last_dir := Filename.dirname s; + | Some s -> current.project_path <- file_chooser#current_folder end | `DELETE_EVENT | `CANCEL -> () end ; @@ -178,7 +180,7 @@ let select_file_for_save ~title ?filename () = file_chooser#set_do_overwrite_confirmation true; file_chooser#set_default_response `SAVE; let dir,filename = match filename with - |None -> !last_dir, "" + |None -> current_dir (), "" |Some f -> Filename.dirname f, Filename.basename f in ignore (file_chooser#set_current_folder dir); @@ -189,7 +191,7 @@ let select_file_for_save ~title ?filename () = file := file_chooser#filename; match !file with None -> () - | Some s -> last_dir := Filename.dirname s; + | Some s -> current.project_path <- file_chooser#current_folder end | `DELETE_EVENT | `CANCEL -> () end ; diff --git a/ide/preferences.ml b/ide/preferences.ml index 9a4fde2f6..d32920ed3 100644 --- a/ide/preferences.ml +++ b/ide/preferences.ml @@ -105,6 +105,7 @@ type pref = mutable read_project : project_behavior; mutable project_file_name : string; + mutable project_path : string option; mutable encoding : inputenc; @@ -182,6 +183,7 @@ let current = { read_project = Ignore_args; project_file_name = "_CoqProject"; + project_path = None; encoding = if Sys.os_type = "Win32" then Eutf8 else Elocale; @@ -265,6 +267,7 @@ let save_pref () = add "project_options" [string_of_project_behavior p.read_project] ++ add "project_file_name" [p.project_file_name] ++ + add "project_path" (match p.project_path with None -> [] | Some s -> [s]) ++ add "encoding" [string_of_inputenc p.encoding] ++ @@ -342,6 +345,7 @@ let load_pref () = set_hd "project_options" (fun v -> np.read_project <- (project_behavior_of_string v)); set_hd "project_file_name" (fun v -> np.project_file_name <- v); + set_option "project_path" (fun v -> np.project_path <- v); set "automatic_tactics" (fun v -> np.automatic_tactics <- v); set_hd "cmd_print" (fun v -> np.cmd_print <- v); diff --git a/ide/preferences.mli b/ide/preferences.mli index ab12e4c7b..1e4f152c2 100644 --- a/ide/preferences.mli +++ b/ide/preferences.mli @@ -32,6 +32,7 @@ type pref = mutable read_project : project_behavior; mutable project_file_name : string; + mutable project_path : string option; mutable encoding : inputenc; |