package coq-lsp
Language Server Protocol native server for Coq
Install
Dune Dependency
Authors
Maintainers
Sources
coq-lsp-0.2.0.8.20.tbz
sha256=bcb9a4c3219aed47ffbfd7c8ea7a2f374140d8cdb76079927548f49c7e3576a9
sha512=945c0010b4952e41055cb7e35175d400e5c126dc340dd1c0ab53321605cd0d9539af6693a794cb81a9dec0385d0880d4417dae923b6d19c9b62913766a185d8c
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)"
>