Provides an IpcM monad for interacting with an external LSP process. Used for testing the Lean server.
Equations
- Lean.Lsp.Ipc.ipcStdioConfig = { stdin := IO.Process.Stdio.piped, stdout := IO.Process.Stdio.piped, stderr := IO.Process.Stdio.inherit }
@[reducible, inline]
Equations
- Lean.Lsp.Ipc.stdin = do let __do_lift ← read pure (IO.FS.Stream.ofHandle __do_lift.stdin)
Equations
- Lean.Lsp.Ipc.stdout = do let __do_lift ← read pure (IO.FS.Stream.ofHandle __do_lift.stdout)
Equations
- Lean.Lsp.Ipc.writeRequest r = do let __do_lift ← Lean.Lsp.Ipc.stdin liftM (__do_lift.writeLspRequest r)
def
Lean.Lsp.Ipc.writeNotification
{α : Type u_1}
[Lean.ToJson α]
(n : Lean.JsonRpc.Notification α)
:
Equations
- Lean.Lsp.Ipc.writeNotification n = do let __do_lift ← Lean.Lsp.Ipc.stdin liftM (__do_lift.writeLspNotification n)
Equations
- One or more equations did not get rendered due to their size.
Equations
- Lean.Lsp.Ipc.readMessage = do let __do_lift ← Lean.Lsp.Ipc.stdout liftM __do_lift.readLspMessage
Equations
- Lean.Lsp.Ipc.readRequestAs expectedMethod α = do let __do_lift ← Lean.Lsp.Ipc.stdout liftM (__do_lift.readLspRequestAs expectedMethod α)
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.
Equations
- Lean.Lsp.Ipc.waitForExit = do let __do_lift ← read liftM __do_lift.wait
def
Lean.Lsp.Ipc.collectDiagnostics
(waitForDiagnosticsId : optParam 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.
partial def
Lean.Lsp.Ipc.collectDiagnostics.loop
(waitForDiagnosticsId : optParam Lean.JsonRpc.RequestID 0)
:
def
Lean.Lsp.Ipc.runWith
{α : Type}
(lean : Lake.FilePath)
(args : optParam (Array String) #[])
(test : Lean.Lsp.Ipc.IpcM α)
:
IO α
Equations
- One or more equations did not get rendered due to their size.