package coq-serapi
Serialization library and protocol for machine interaction with the Coq proof assistant
Install
Dune Dependency
Authors
Maintainers
Sources
coq-serapi-8.16.0.0.16.1.tbz
sha256=f1070e6fa36ecf042319a14f621f26a331075f3777dfb85a0afbac6e3323e9d4
sha512=efbd947aa6750672f089b7b8604c798033793510eea1c45f4265df5f548b2ecdd3e69d5cb49b0714c09de1012fe358f618c9b1f4610a33339a151b4fdac42321
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
(************************************************************************) (* * 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 list_last l = List.(nth l (length l - 1)) (* Should improve *) let map_serlib fl_pkg = let supported = match fl_pkg with (* Linked-in statically *) | "coq-core.plugins.ltac." -> false (* | "tauto_plugin" -> false *) (* Supported *) | "coq-core.plugins.firstorder" (* firstorder *) | "coq-core.plugins.funind" (* funind *) | "coq-core.plugins.ring" (* setoid_ring *) | "coq-core.plugins.extraction" (* setoid_ring *) | "coq-core.plugins.ssrmatching" (* ssrmatching *) | "coq-core.plugins.ssreflect" (* ssr *) -> true | _ -> if debug then Format.eprintf "missing serlib: %s@\n%!" fl_pkg; false in if supported then let plugin_name = String.split_on_char '.' fl_pkg |> list_last in Some ("coq-serapi.serlib." ^ plugin_name) else None let plugin_handler user_handler = let loader = Option.default (Fl_dynload.load_packages ~debug:false) user_handler in fun fl_pkg -> try let _, fl_pkg = Mltop.PluginSpec.repr fl_pkg in (* In 8.10 with a Dune-built Coq Fl_dynload will track the dependencies *) match map_serlib fl_pkg with | Some serlib_pkg -> if debug then Format.eprintf "[plugin loader]: plugin %s requested via findlib@\n%!" fl_pkg; loader [serlib_pkg] | None -> if debug then Format.eprintf "[plugin loader]: plugin %s requested via mltop@\n%!" fl_pkg; loader [fl_pkg] 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)"
>