diff options
| author | filliatr | 1999-12-12 22:03:12 +0000 |
|---|---|---|
| committer | filliatr | 1999-12-12 22:03:12 +0000 |
| commit | ed8ec17ce48b4d0cf14696a4e9760239aa31f59b (patch) | |
| tree | 6c596c6e8ccebb4d29a856439f07d3fd85a4e3d2 /toplevel | |
| parent | 9658d225b4003ac10c4c670e788d386930c3fa60 (diff) | |
modules
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@238 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'toplevel')
| -rw-r--r-- | toplevel/command.ml | 21 | ||||
| -rw-r--r-- | toplevel/coqtop.ml | 63 | ||||
| -rw-r--r-- | toplevel/discharge.ml | 4 | ||||
| -rw-r--r-- | toplevel/errors.ml | 4 | ||||
| -rw-r--r-- | toplevel/mltop.ml4 | 2 | ||||
| -rw-r--r-- | toplevel/usage.ml | 8 | ||||
| -rw-r--r-- | toplevel/vernacentries.ml | 44 |
7 files changed, 87 insertions, 59 deletions
diff --git a/toplevel/command.ml b/toplevel/command.ml index 776864d705..6a0a2e2a98 100644 --- a/toplevel/command.ml +++ b/toplevel/command.ml @@ -3,6 +3,7 @@ open Pp open Util +open Options open Generic open Term open Constant @@ -40,7 +41,8 @@ let constant_entry_of_com com = let definition_body ident n com = let ce = constant_entry_of_com com in - declare_constant ident (ce,n) + declare_constant ident (ce,n); + if is_verbose() then message ((string_of_id ident) ^ " is defined") let red_constant_entry ce = function | None -> ce @@ -57,11 +59,14 @@ let red_constant_entry ce = function let definition_body_red ident n com red_option = let ce = constant_entry_of_com com in let ce' = red_constant_entry ce red_option in - declare_constant ident (ce',n) + declare_constant ident (ce',n); + if is_verbose() then message ((string_of_id ident) ^ " is defined") let syntax_definition ident com = let c = raw_constr_of_com Evd.empty (Global.context()) com in - Syntax_def.declare_syntactic_definition ident c + Syntax_def.declare_syntactic_definition ident c; + if is_verbose() then + message ((string_of_id ident) ^ " is now a syntax macro") (***TODO let abstraction_definition ident arity com = @@ -158,7 +163,7 @@ let build_mutual lparams lnamearconstrs finite = in States.unfreeze fs; let sp = declare_mind mie in - pPNL(minductive_message lrecnames); + if is_verbose() then pPNL(minductive_message lrecnames); for i = 0 to List.length mispecvec - 1 do declare_eliminations sp i done @@ -248,7 +253,7 @@ let build_recursive lnameargsardef = in (* declare the recursive definitions *) declare 0 lnamerec; - pPNL(recursive_message lnamerec) + if is_verbose() then pPNL(recursive_message lnamerec) end; (* The others are declared as normal definitions *) let var_subst id = (id,make_substituend (global_reference CCI id)) in @@ -313,7 +318,7 @@ let build_corecursive lnameardef = | _ -> () in declare 0 lnamerec; - pPNL(corecursive_message lnamerec) + if is_verbose() then pPNL(corecursive_message lnamerec) end; let var_subst id = (id,make_substituend (global_reference CCI id)) in @@ -351,4 +356,6 @@ let build_scheme lnamedepindsort = declare (i+1) lf | _ -> () in - declare 0 lrecnames; pPNL(recursive_message lrecnames) + declare 0 lrecnames; + if is_verbose() then pPNL(recursive_message lrecnames) + diff --git a/toplevel/coqtop.ml b/toplevel/coqtop.ml index 282039d986..01cfeb4e24 100644 --- a/toplevel/coqtop.ml +++ b/toplevel/coqtop.ml @@ -55,12 +55,10 @@ let require () = (List.rev !require_list) -(* - * Parsing of the command line. +(* Parsing of the command line. * - * We no longer use Arg.parse, in order to use Usage.print_usage to be coherent - * with launch/coqtop and launch/coqc. - *) + * We no longer use Arg.parse, in order to use share Usage.print_usage + * between coqtop and coqc. *) let usage () = if !batch_mode then @@ -70,62 +68,75 @@ let usage () = flush stderr ; exit 1 +let version () = + Printf.printf "The Coq Proof Assistant, version %s (%s)\n" + Coq_config.version Coq_config.date; + Printf.printf "compiled on %s\n" Coq_config.compile_date; + exit 0 let parse_args () = let rec parse = function | [] -> () - | ("-I"|"-include") :: d :: rem -> push_include d ; parse rem + | ("-I"|"-include") :: d :: rem -> push_include d; parse rem | ("-I"|"-include") :: [] -> usage () - | ("-R") :: d :: rem -> rec_include d ; parse rem - | ("-R") :: [] -> usage () + | "-R" :: d :: rem -> rec_include d; parse rem + | "-R" :: [] -> usage () - | "-q" :: rem -> no_load_rc () ; parse rem + | "-q" :: rem -> no_load_rc (); parse rem - | "-batch" :: rem -> set_batch_mode () ; parse rem + | "-batch" :: rem -> set_batch_mode (); parse rem - | "-outputstate" :: s :: rem -> set_outputstate s ; parse rem + | "-outputstate" :: s :: rem -> set_outputstate s; parse rem | "-outputstate" :: [] -> usage () - | "-nois" :: rem -> set_inputstate "" ; parse rem + | "-nois" :: rem -> set_inputstate ""; parse rem - | ("-inputstate"|"-is") :: s :: rem -> set_inputstate s ; parse rem + | ("-inputstate"|"-is") :: s :: rem -> set_inputstate s; parse rem | ("-inputstate"|"-is") :: [] -> usage () - | "-load-ml-object" :: f :: rem -> Mltop.dir_ml_load f ; parse rem + | "-load-ml-object" :: f :: rem -> Mltop.dir_ml_load f; parse rem | "-load-ml-object" :: [] -> usage () - | "-load-ml-source" :: f :: rem -> Mltop.dir_ml_use f ; parse rem + | "-load-ml-source" :: f :: rem -> Mltop.dir_ml_use f; parse rem | "-load-ml-source" :: [] -> usage () - | "-load-vernac-source" :: f :: rem -> add_load_vernacular f ; parse rem + | "-load-vernac-source" :: f :: rem -> add_load_vernacular f; parse rem | "-load-vernac-source" :: [] -> usage () - | "-load-vernac-object" :: f :: rem -> add_vernac_obj f ; parse rem + | "-load-vernac-object" :: f :: rem -> add_vernac_obj f; parse rem | "-load-vernac-object" :: [] -> usage () - | "-require" :: f :: rem -> add_require f ; parse rem + | "-require" :: f :: rem -> add_require f; parse rem | "-require" :: [] -> usage () - | "-unsafe" :: f :: rem -> add_unsafe f ; parse rem + | "-unsafe" :: f :: rem -> add_unsafe f; parse rem | "-unsafe" :: [] -> usage () - | "-debug" :: rem -> set_debug () ; parse rem + | "-debug" :: rem -> set_debug (); parse rem - | "-emacs" :: rem -> Printer.print_emacs := true ; parse rem + | "-emacs" :: rem -> Printer.print_emacs := true; parse rem + + | "-where" :: _ -> print_endline Coq_config.coqlib; exit 0 - | "-init-file" :: f :: rem -> set_rcfile f ; parse rem + | ("-quiet"|"-silent") :: rem -> Options.make_silent true; parse rem + + | ("-?"|"-h"|"-H"|"-help"|"--help") :: _ -> usage () + + | ("-v"|"--version") :: _ -> version () + + | "-init-file" :: f :: rem -> set_rcfile f; parse rem | "-init-file" :: [] -> usage () - | "-user" :: u :: rem -> set_rcuser u ; parse rem + | "-user" :: u :: rem -> set_rcuser u; parse rem | "-user" :: [] -> usage () - | "-notactics" :: rem -> remove_top_ml () ; parse rem + | "-notactics" :: rem -> remove_top_ml (); parse rem - | "-just-parsing" :: rem -> Vernac.just_parsing := true ; parse rem + | "-just-parsing" :: rem -> Vernac.just_parsing := true; parse rem - | s :: _ -> prerr_endline ("Don't know what to do with " ^ s) ; usage () + | s :: _ -> prerr_endline ("Don't know what to do with " ^ s); usage () in try diff --git a/toplevel/discharge.ml b/toplevel/discharge.ml index f0a97c2180..15f52e412b 100644 --- a/toplevel/discharge.ml +++ b/toplevel/discharge.ml @@ -182,11 +182,11 @@ let process_constant osecsp nsecsp oldenv (ids_to_discard,modlist) cb = (* Discharge of the various objects of the environment. *) let constant_message id = - if Options.verbose() then + if Options.is_verbose() then pPNL [< print_id id; 'sTR " is discharged." >] let inductive_message inds = - if Options.verbose() then + if Options.is_verbose() then pPNL (hOV 0 (match inds with | [] -> assert false diff --git a/toplevel/errors.ml b/toplevel/errors.ml index af8b7c5cbf..ba1f36cd7c 100644 --- a/toplevel/errors.ml +++ b/toplevel/errors.ml @@ -48,9 +48,9 @@ let rec explain_exn_default = function | Sys.Break -> hOV 0 [< 'fNL; 'sTR"User Interrupt." >] - | TypeError(k,ctx,te) -> Himsg.explain_type_error k ctx te + | TypeError(k,ctx,te) -> hOV 0 (Himsg.explain_type_error k ctx te) - | InductiveError e -> Himsg.explain_inductive_error e + | InductiveError e -> hOV 0 (Himsg.explain_inductive_error e) | Stdpp.Exc_located (loc,exc) -> hOV 0 [< if loc = Ast.dummy_loc then [<>] diff --git a/toplevel/mltop.ml4 b/toplevel/mltop.ml4 index d2a2400754..3135d53fc4 100644 --- a/toplevel/mltop.ml4 +++ b/toplevel/mltop.ml4 @@ -263,7 +263,7 @@ let _ = vinterp_add "PrintMLPath" let print_ml_modules () = let l = get_loaded_modules () in pP [< 'sTR"Loaded ML Modules : " ; - hOV 0 (prlist_with_sep pr_fnl (fun s -> [< 'sTR s >]) l) >] + hOV 0 (prlist_with_sep pr_fnl (fun s -> [< 'sTR s >]) l); 'fNL >] let _ = vinterp_add "PrintMLModules" (function diff --git a/toplevel/usage.ml b/toplevel/usage.ml index 2c230365df..a87e61bc53 100644 --- a/toplevel/usage.ml +++ b/toplevel/usage.ml @@ -9,7 +9,7 @@ let print_usage_channel co command = output_string co " -I dir add directory dir in the include path -include dir (idem) - -R dir add recursively dir + -R dir add dir recursively -src add source directories in the include path -inputstate f read state from file f.coq @@ -33,8 +33,8 @@ let print_usage_channel co command = -v print Coq version and exit -q skip loading of rcfile - -init-file f give the rcfile f - -user u give the user u + -init-file f set the rcfile to f + -user u use the rcfile of user u -batch batch mode (exits just after arguments parsing) -emacs tells Coq it is executed under Emacs " @@ -46,7 +46,7 @@ let print_usage = print_usage_channel stderr let print_usage_coqtop () = print_usage "Usage: coqtop <options>\n"; output_string stderr -" -searchisos run Coq_SearchIsos\n";; +" -searchisos run Coq_SearchIsos\n" let print_usage_coqc () = print_usage "Usage: coqc [-i] [-t] <options> file...\n diff --git a/toplevel/vernacentries.ml b/toplevel/vernacentries.ml index 93a3303165..a50dcfdf50 100644 --- a/toplevel/vernacentries.ml +++ b/toplevel/vernacentries.ml @@ -269,10 +269,19 @@ let _ = add "BeginModule" (function | [VARG_IDENTIFIER id] -> - fun () -> Library.open_module (string_of_id id) + fun () -> Lib.start_module (string_of_id id) | _ -> bad_vernac_args "BeginModule") let _ = + add "WriteModule" + (function + | [VARG_IDENTIFIER id] -> + fun () -> let m = string_of_id id in Library.save_module_to m m + | [VARG_IDENTIFIER id; VARG_STRING f] -> + fun () -> Library.save_module_to (string_of_id id) f + | _ -> bad_vernac_args "WriteModule") + +let _ = add "ReadModule" (function | [VARG_IDENTIFIER id] -> @@ -281,19 +290,27 @@ let _ = | _ -> bad_vernac_args "ReadModule") let _ = + add "ImportModule" + (function + | [VARG_IDENTIFIER id] -> + fun () -> + without_mes_ambig Library.open_module (string_of_id id) + | _ -> bad_vernac_args "ImportModule") + +let _ = add "PrintModules" (function | [] -> (fun () -> let opened = Library.opened_modules () and loaded = Library.loaded_modules () in - mSG [< 'sTR"Imported (open) Modules: " ; + mSG [< 'sTR"Loaded Modules: "; + hOV 0 (prlist_with_sep pr_fnl + (fun s -> [< 'sTR s >]) loaded); + 'fNL; + 'sTR"Imported (open) Modules: "; hOV 0 (prlist_with_sep pr_fnl - (fun s -> [< 'sTR s >]) opened) ; - 'fNL ; - 'sTR"Loaded Modules: " ; - hOV 0 (prlist_with_sep pr_fnl - (fun s -> [< 'sTR s >]) loaded) ; + (fun s -> [< 'sTR s >]) opened); 'fNL >]) | _ -> bad_vernac_args "PrintModules") @@ -733,7 +750,6 @@ let _ = in fun () -> definition_body_red id stre c red_option; - message ((string_of_id id) ^ " is defined"); if coe then begin Class.try_add_new_coercion id stre; message ((string_of_id id) ^ " is now a coercion") @@ -1040,20 +1056,14 @@ let _ = add "SyntaxMacro" (function | [VARG_IDENTIFIER id;VARG_COMMAND com] -> - (fun () -> - syntax_definition id com; - if not(is_silent()) then - message ((string_of_id id) ^ " is now a syntax macro")) + (fun () -> syntax_definition id com) | [VARG_IDENTIFIER id;VARG_COMMAND com; VARG_NUMBER n] -> (fun () -> let rec aux t = function | 0 -> t - | n -> aux (ope("APPLIST", - [t;ope("ISEVAR",[])])) (n-1) + | n -> aux (ope("APPLIST",[t;ope("ISEVAR",[])])) (n-1) in - syntax_definition id (aux com n); - if not(is_silent()) then - message ((string_of_id id) ^ " is now a syntax macro")) + syntax_definition id (aux com n)) | _ -> bad_vernac_args "SyntaxMacro") (*** |
