diff options
Diffstat (limited to 'toplevel/vernacentries.ml')
-rw-r--r-- | toplevel/vernacentries.ml | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/toplevel/vernacentries.ml b/toplevel/vernacentries.ml index 8bf20ca69..1f0524aaf 100644 --- a/toplevel/vernacentries.ml +++ b/toplevel/vernacentries.ml @@ -888,11 +888,12 @@ let _ = | [VARG_QUALID qid] -> (fun () -> let ref = - try Nametab.locate qid + try + Nametab.locate qid with Not_found -> Pretype_errors.error_global_not_found_loc loc qid in - search_by_head ref) + Search.search_by_head ref) | _ -> bad_vernac_args "SEARCH") let _ = @@ -901,6 +902,43 @@ let _ = | [VARG_NUMBER n] -> (fun () -> mSG(inspect n)) | _ -> bad_vernac_args "INSPECT") +let string_of_id_list = + List.map (function + | VARG_IDENTIFIER s -> string_of_id s + | _ -> bad_vernac_args "string_of_id_list") + +let inside_outside = function + | (VARG_STRING s) :: l -> string_of_id_list l, s + | [] -> [], "" + | _ -> bad_vernac_args "inside/outside" + +let _ = + add "SearchModules" + (function + | (VARG_IDENTIFIER id) :: l -> + (fun () -> + let ref = Nametab.sp_of_id CCI id in + Search.search_modules ref (inside_outside l)) + | _ -> bad_vernac_args "SearchModules") + +let _ = + add "SearchRewrite" + (function + | (VARG_CONSTR c) :: l -> + (fun () -> + let _,pat = interp_constrpattern Evd.empty (Global.env()) c in + Search.search_rewrite pat (inside_outside l)) + | _ -> bad_vernac_args "SearchRewrite") + +let _ = + add "SearchPattern" + (function + | (VARG_CONSTR c) :: l -> + (fun () -> + let _,pat = interp_constrpattern Evd.empty (Global.env()) c in + Search.search_pattern pat (inside_outside l)) + | _ -> bad_vernac_args "SearchPattern") + let _ = add "SETUNDO" (function |