package coq-lsp
Language Server Protocol native server for Coq
Install
Dune Dependency
Authors
Maintainers
Sources
coq-lsp-0.2.0.8.18.tbz
sha256=ba40f92f4c751793265d20f1c217638146e4714e0196a0d2b00c9ed58774abf6
sha512=0b7c1d98e22017e44d90461ee61081043401387251488ee7113668d24f6a463dca4ce690e30355248a949817c6b8f8a0944489c4d9b66bd239d903a089a1f11f
doc/src/petanque_shell/interp_shell.ml.html
Source file interp_shell.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
(************************************************************************) (* Coq Petanque *) (* Copyright 2019 MINES ParisTech -- Dual License LGPL 2.1 / GPL3+ *) (* Copyright 2019-2024 Inria -- Dual License LGPL 2.1 / GPL3+ *) (************************************************************************) open Petanque_json.Interp open Protocol_shell let do_handle ~fn ~token action = match action with | Action.Now handler -> handler ~token | Action.Doc { uri; handler } -> let open Coq.Compat.Result.O in let* doc = fn ~token ~uri |> of_pet_err in handler ~token ~doc let request ~fn ~token ~id ~method_ ~params = let unhandled ~token ~method_ = match method_ with | s when String.equal SetWorkspace.method_ s -> do_handle ~fn ~token (do_request (module SetWorkspace) ~params) | s when String.equal TableOfContents.method_ s -> do_handle ~fn ~token (do_request (module TableOfContents) ~params) | _ -> (* JSON-RPC method not found *) let code = -32601 in let message = Format.asprintf "method %s not found" method_ in Error (code, message) in let do_handle = do_handle ~fn in match handle_request ~do_handle ~unhandled ~token ~method_ ~params with | Ok result -> Lsp.Base.Response.mk_ok ~id ~result | Error (code, message) -> Lsp.Base.Response.mk_error ~id ~code ~message type doc_handler = token:Coq.Limits.Token.t -> uri:Lang.LUri.File.t -> (Fleche.Doc.t, Petanque.Agent.Error.t) Result.t let interp ~fn ~token (r : Lsp.Base.Message.t) : Lsp.Base.Message.t option = match r with | Request { id; method_; params } -> let response = request ~fn ~token ~id ~method_ ~params in Some (Lsp.Base.Message.response response) | Notification { method_; params = _ } -> let message = "unhandled notification: " ^ method_ in let log = Lsp.Io.mk_logTrace ~message ~extra:None in Some (Lsp.Base.Message.Notification log) | Response (Ok { id; _ }) | Response (Error { id; _ }) -> let message = "unhandled response: " ^ string_of_int id in let log = Lsp.Io.mk_logTrace ~message ~extra:None in Some (Lsp.Base.Message.Notification log)
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>