This file contains Lean-specific extensions to LSP. See the structures below for which additional requests and notifications are supported.
Controls when dependencies are built on textDocument/didOpen
notifications.
- always: Lean.Lsp.DependencyBuildMode
Always build dependencies.
- once: Lean.Lsp.DependencyBuildMode
Build dependencies once, but then do not build them again on import changes / crashes. Used for
didOpen
notifications that are explicitly intended for manually triggering the build. - never: Lean.Lsp.DependencyBuildMode
Never build dependencies.
Instances For
- textDocument : Lean.Lsp.TextDocumentItem
- dependencyBuildMode? : Option Lean.Lsp.DependencyBuildMode
Instances For
textDocument/waitForDiagnostics
client->server request.
Yields a response when all the diagnostics for a version of the document greater or equal to the specified one have been emitted. If the request specifies a version above the most recently processed one, the server will delay the response until it does receive the specified version. Exists for synchronization purposes, e.g. during testing or when external tools might want to use our LSP server.
- uri : Lean.Lsp.DocumentUri
- version : Nat
Instances For
textDocument/waitForDiagnostics
client<-server reply.
Instances For
Equations
- Lean.Lsp.instFromJsonWaitForDiagnostics = { fromJson? := fun (x : Lean.Json) => pure { } }
Equations
- Lean.Lsp.instToJsonWaitForDiagnostics = { toJson := fun (x : Lean.Lsp.WaitForDiagnostics) => Lean.Json.mkObj [] }
- processing: Lean.Lsp.LeanFileProgressKind
- fatalError: Lean.Lsp.LeanFileProgressKind
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
- range : Lean.Lsp.Range
Instances For
$/lean/fileProgress
client<-server notification.
Contains the ranges of the document that are currently being processed by the server.
- textDocument : Lean.Lsp.VersionedTextDocumentIdentifier
- processing : Array Lean.Lsp.LeanFileProgressProcessingInfo
Instances For
$/lean/plainGoal
client->server request.
If there is a tactic proof at the specified position, returns the current goals.
Otherwise returns null
.
Instances For
Equations
- Lean.Lsp.instFromJsonPlainGoalParams = { fromJson? := Lean.Lsp.fromJsonPlainGoalParams✝ }
Equations
Equations
- Lean.Lsp.instFromJsonPlainGoal = { fromJson? := Lean.Lsp.fromJsonPlainGoal✝ }
Equations
- Lean.Lsp.instToJsonPlainGoal = { toJson := Lean.Lsp.toJsonPlainGoal✝ }
$/lean/plainTermGoal
client->server request.
Returns the expected type at the specified position, pretty-printed as a string.
Instances For
Equations
- Lean.Lsp.instFromJsonPlainTermGoal = { fromJson? := Lean.Lsp.fromJsonPlainTermGoal✝ }
Equations
- Lean.Lsp.instToJsonPlainTermGoal = { toJson := Lean.Lsp.toJsonPlainTermGoal✝ }
$/lean/rpc/connect
client->server request.
Starts an RPC session at the given file's worker, replying with the new session ID. Multiple sessions may be started and operating concurrently.
A session may be destroyed by the server at any time (e.g. due to a crash), in which case further
RPC requests for that session will reply with RpcNeedsReconnect
errors. The client should discard
references held from that session and connect
again.
- uri : Lean.Lsp.DocumentUri
Instances For
Equations
- Lean.Lsp.instFromJsonRpcConnectParams = { fromJson? := Lean.Lsp.fromJsonRpcConnectParams✝ }
Equations
$/lean/rpc/connect
client<-server reply.
Indicates that an RPC connection had been made and a session started for it.
- sessionId : UInt64
Instances For
Equations
- Lean.Lsp.instFromJsonRpcConnected = { fromJson? := Lean.Lsp.fromJsonRpcConnected✝ }
Equations
- Lean.Lsp.instToJsonRpcConnected = { toJson := Lean.Lsp.toJsonRpcConnected✝ }
$/lean/rpc/call
client->server request.
A request to execute a procedure bound for RPC. If an incorrect session ID is present, the server
errors with RpcNeedsReconnect
.
Extending TDPP is weird. But in Lean, symbols exist in the context of a position within a source file. So we need this to refer to code in the environment at that position.
- textDocument : Lean.Lsp.TextDocumentIdentifier
- position : Lean.Lsp.Position
- sessionId : UInt64
- method : Lake.Name
Procedure to invoke. Must be fully qualified.
- params : Lean.Json
Instances For
Equations
- Lean.Lsp.instFromJsonRpcCallParams = { fromJson? := Lean.Lsp.fromJsonRpcCallParams✝ }
Equations
- Lean.Lsp.instToJsonRpcCallParams = { toJson := Lean.Lsp.toJsonRpcCallParams✝ }
$/lean/rpc/release
client->server notification.
A notification to release remote references. Should be sent by the client when it no longer needs
RpcRef
s it has previously received from the server. Not doing so is safe but will leak memory.
- uri : Lean.Lsp.DocumentUri
- sessionId : UInt64
- refs : Array Lean.Lsp.RpcRef
Instances For
Equations
- Lean.Lsp.instFromJsonRpcReleaseParams = { fromJson? := Lean.Lsp.fromJsonRpcReleaseParams✝ }
Equations
$/lean/rpc/keepAlive
client->server notification.
The client must send an RPC notification every 10s in order to keep the RPC session alive. This is the simplest one. On not seeing any notifications for three 10s periods, the server will drop the RPC session and its associated references.
- uri : Lean.Lsp.DocumentUri
- sessionId : UInt64
Instances For
Equations
- Lean.Lsp.instInhabitedLineRange = { default := { start := default, «end» := default } }
Equations
- Lean.Lsp.instReprLineRange = { reprPrec := Lean.Lsp.reprLineRange✝ }
Equations
- Lean.Lsp.instFromJsonLineRange = { fromJson? := Lean.Lsp.fromJsonLineRange✝ }
Equations
- Lean.Lsp.instToJsonLineRange = { toJson := Lean.Lsp.toJsonLineRange✝ }