aboutsummaryrefslogtreecommitdiffhomepage
path: root/ide/coqide.ml
diff options
context:
space:
mode:
authorGravatar ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7>2013-09-04 18:32:28 +0000
committerGravatar ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7>2013-09-04 18:32:28 +0000
commit5ba4818ee70fb19f22d76feeac3594f92b9bf374 (patch)
treee99e7502d7dea10c6750da10295fa5b945d632d7 /ide/coqide.ml
parent36e670c658274ce37d8d352032879db53897165c (diff)
More robust argument setter in CoqIDE. It does not crash anymore on bad
arguments. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16761 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'ide/coqide.ml')
-rw-r--r--ide/coqide.ml14
1 files changed, 12 insertions, 2 deletions
diff --git a/ide/coqide.ml b/ide/coqide.ml
index 0b6f9aa80..888f07128 100644
--- a/ide/coqide.ml
+++ b/ide/coqide.ml
@@ -746,8 +746,18 @@ let coqtop_arguments sn =
let ok = GButton.button ~stock:`OK ~packing:box#add () in
let ok_cb () =
let nargs = CString.split ' ' entry#text in
- let () = if nargs <> args then Coq.set_arguments coqtop nargs in
- dialog#destroy ()
+ if nargs <> args then
+ let failed = Coq.filter_coq_opts nargs in
+ match failed with
+ | [] ->
+ let () = Coq.set_arguments coqtop nargs in
+ dialog#destroy ()
+ | args ->
+ let args = String.concat " " args in
+ let msg = Printf.sprintf "Invalid arguments: %s" args in
+ let () = sn.messages#clear in
+ sn.messages#push Interface.Error msg
+ else dialog#destroy ()
in
let _ = entry#connect#activate ok_cb in
let _ = ok#connect#clicked ok_cb in