aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErika2020-02-16 18:30:18 +0000
committerErika2020-02-16 18:46:08 +0000
commit5b291be394496e360b49bef44912caaa6b5c31f4 (patch)
tree655c470e97192e551e01f773d2fdb0af72a2ba87
parentd122f7d5ffd5d3b26153a0ad7b74a669b8dd1c9d (diff)
CoqIDE: allow opening multiple files at once
-rw-r--r--ide/coq.ml6
-rw-r--r--ide/coqide.ml5
-rw-r--r--ide/ideutils.ml13
-rw-r--r--ide/ideutils.mli2
4 files changed, 13 insertions, 13 deletions
diff --git a/ide/coq.ml b/ide/coq.ml
index 4d6ba55d76..0c6aef0305 100644
--- a/ide/coq.ml
+++ b/ide/coq.ml
@@ -133,10 +133,10 @@ and asks_for_coqtop args =
~filter:false
~filename:(coqtop_path ()) () in
match file with
- | Some _ ->
- let () = custom_coqtop := file in
+ | [file] ->
+ let () = custom_coqtop := Some file in
filter_coq_opts args
- | None -> exit 0
+ | _ -> exit 0
exception WrongExitStatus of string
diff --git a/ide/coqide.ml b/ide/coqide.ml
index ccf6d40b2b..143a12deeb 100644
--- a/ide/coqide.ml
+++ b/ide/coqide.ml
@@ -282,9 +282,8 @@ let load ?parent _ =
let filename =
try notebook#current_term.fileops#filename
with Invalid_argument _ -> None in
- match select_file_for_open ~title:"Load file" ?parent ?filename () with
- | None -> ()
- | Some f -> FileAux.load_file f
+ let filenames = select_file_for_open ~title:"Load file" ~multiple:true ?parent ?filename () in
+ List.iter FileAux.load_file filenames
let save ?parent _ = on_current_term (FileAux.check_save ?parent ~saveas:false)
diff --git a/ide/ideutils.ml b/ide/ideutils.ml
index 1cf065cf25..38da229d61 100644
--- a/ide/ideutils.ml
+++ b/ide/ideutils.ml
@@ -259,7 +259,7 @@ let current_dir () = match project_path#get with
| None -> ""
| Some dir -> dir
-let select_file_for_open ~title ?(filter=true) ?parent ?filename () =
+let select_file_for_open ~title ?(filter=true) ?(multiple=false) ?parent ?filename () =
let file_chooser =
GWindow.file_chooser_dialog ~action:`OPEN ~modal:true ~title ?parent ()
in
@@ -271,6 +271,7 @@ let select_file_for_open ~title ?(filter=true) ?parent ?filename () =
file_chooser#add_filter (filter_all_files ())
end;
file_chooser#set_default_response `OPEN;
+ file_chooser#set_select_multiple multiple;
let dir = match filename with
| None -> current_dir ()
| Some f -> Filename.dirname f in
@@ -279,12 +280,12 @@ let select_file_for_open ~title ?(filter=true) ?parent ?filename () =
match file_chooser#run () with
| `OPEN ->
begin
- match file_chooser#filename with
- | None -> None
- | Some _ as f ->
- project_path#set file_chooser#current_folder; f
+ let filenames = file_chooser#get_filenames in
+ (if filenames <> [] then
+ project_path#set file_chooser#current_folder);
+ filenames
end
- | `DELETE_EVENT | `CANCEL -> None in
+ | `DELETE_EVENT | `CANCEL -> [] in
file_chooser#destroy ();
file
diff --git a/ide/ideutils.mli b/ide/ideutils.mli
index bacb273657..af30cd2b05 100644
--- a/ide/ideutils.mli
+++ b/ide/ideutils.mli
@@ -31,7 +31,7 @@ val find_tag_start : GText.tag -> GText.iter -> GText.iter
val find_tag_stop : GText.tag -> GText.iter -> GText.iter
val select_file_for_open :
- title:string -> ?filter:bool -> ?parent:GWindow.window -> ?filename:string -> unit -> string option
+ title:string -> ?filter:bool -> ?multiple:bool -> ?parent:GWindow.window -> ?filename:string -> unit -> string list
val select_file_for_save :
title:string -> ?parent:GWindow.window -> ?filename:string -> unit -> string option
val try_convert : string -> string