Provides an IpcM monad for interacting with an external LSP process. Used for testing the Lean server.
@[reducible, inline]
Instances For
Equations
- Lean.Lsp.Ipc.stdout = do let __do_lift ← read pure (IO.FS.Stream.ofHandle __do_lift.stdout)
Instances For
Equations
- Lean.Lsp.Ipc.writeRequest r = do let __do_lift ← Lean.Lsp.Ipc.stdin liftM (__do_lift.writeLspRequest r)
Instances For
def
Lean.Lsp.Ipc.writeNotification
{α : Type u_1}
[Lean.ToJson α]
(n : Lean.JsonRpc.Notification α)
:
Instances For
Equations
- Lean.Lsp.Ipc.readMessage = do let __do_lift ← Lean.Lsp.Ipc.stdout liftM __do_lift.readLspMessage
Instances For
Instances For
partial def
Lean.Lsp.Ipc.readResponseAs
(expectedID : Lean.JsonRpc.RequestID)
(α : Type)
[Lean.FromJson α]
:
Reads response, discarding notifications and server-to-client requests in between.
This function is meant purely for testing where we use collectDiagnostics
explicitly
if we do care about such notifications.
def
Lean.Lsp.Ipc.collectDiagnostics
(waitForDiagnosticsId : Lean.JsonRpc.RequestID := 0)
(target : Lean.Lsp.DocumentUri)
(version : Nat)
:
Waits for the worker to emit all diagnostic notifications for the current document version and returns the last notification, if any.
We used to return all notifications but with debouncing in the server, this would not be deterministic anymore as what messages are dropped depends on wall-clock timing.
Equations
- One or more equations did not get rendered due to their size.
Instances For
partial def
Lean.Lsp.Ipc.collectDiagnostics.loop
(waitForDiagnosticsId : Lean.JsonRpc.RequestID := 0)
:
def
Lean.Lsp.Ipc.runWith
{α : Type}
(lean : System.FilePath)
(args : Array String := #[])
(test : Lean.Lsp.Ipc.IpcM α)
:
IO α