package coq-serapi
Serialization library and protocol for machine interaction with the Coq proof assistant
Install
Dune Dependency
Authors
Maintainers
Sources
coq-serapi-8.14.0.0.14.0.tbz
sha256=1c16d8e37b0970f97313d99b57456013ff5ec94135dffc7a3d6d15c2f23b5dfe
sha512=e2a2b6f7cba9f31aed022058718efe3b5233b6f67a4a8aa79470697c640986053e19508866cf886318f2cc4f26e067583a908fad8c9655aa309ad359000abf1e
doc/src/coq-serapi.sertop_v8_12/sertop_loader.ml.html
Source file sertop_loader.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
(************************************************************************) (* * The Coq Proof Assistant / The Coq Development Team *) (* v * INRIA, CNRS and contributors - Copyright 1999-2018 *) (* <O___,, * (see CREDITS file for the list of authors) *) (* \VV/ **************************************************************) (* // * This file is distributed under the terms of the *) (* * GNU Lesser General Public License Version 2.1 *) (* * (see LICENSE file for the text of the license) *) (************************************************************************) (************************************************************************) (* Coq serialization API/Plugin *) (* Copyright 2016-2019 MINES ParisTech *) (************************************************************************) (* Status: Very Experimental *) (************************************************************************) let debug = false let ml_path = ref [] let add_ml_path path = ml_path := path :: !ml_path (* Should improve *) let map_serlib ml_mod = let plugin_name = Filename.(remove_extension (basename ml_mod)) in let supported = match plugin_name with (* Linked-in statically *) | "ltac_plugin" -> false (* | "tauto_plugin" -> false *) (* Supported *) | "firstorder_plugin" (* firstorder *) | "funind_plugin" (* funind *) | "ring_plugin" (* setoid_ring *) | "extraction_plugin" (* setoid_ring *) | "ssrmatching_plugin" (* ssrmatching *) | "ssreflect_plugin" (* ssr *) -> true | _ -> if debug then Format.eprintf "missing serlib: %s@\n%!" ml_mod; false in if supported then Some ("coq-serapi.serlib." ^ plugin_name) else None let plugin_handler user_handler = let loader = Option.default Dynlink.loadfile user_handler in fun ml_mod -> try (* In 8.10 with a Dune-built Coq Fl_dynload will track the dependencies *) match map_serlib ml_mod with | Some serlib_pkg -> if debug then Format.eprintf "[plugin loader]: module %s requested via findlib@\n%!" ml_mod; Fl_dynload.load_packages [serlib_pkg] | None -> if debug then Format.eprintf "[plugin loader]: module %s requested via mltop@\n%!" ml_mod; let _, ml_file = System.find_file_in_path ~warn:true !ml_path ml_mod in let () = loader ml_file in () with | Dynlink.Error err as exn -> let msg = Dynlink.error_message err in Format.eprintf "[sertop] Critical Dynlink error %s@\n%!" msg; raise exn | Fl_package_base.No_such_package (pkg, _) as exn -> Format.eprintf "[sertop] Couldn't find the SerAPI plugin %s@; please check `ocamlfind list` does include SerAPI's plugin libraries.\n%!" pkg; raise exn
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>