Finds the first (in pre-order) snapshot task in tree
whose range?
contains pos
and which
contains an info tree, and then returns that info tree, waiting for any snapshot tasks on the way.
Subtrees that do not contain the position are skipped without forcing their tasks.
- code : Lean.JsonRpc.ErrorCode
- message : String
Instances For
Equations
- Lean.Server.instInhabitedRequestError = { default := { code := default, message := default } }
Equations
- Lean.Server.RequestError.fileChanged = { code := Lean.JsonRpc.ErrorCode.contentModified, message := "File changed." }
Instances For
Equations
- Lean.Server.RequestError.methodNotFound method = { code := Lean.JsonRpc.ErrorCode.methodNotFound, message := toString "No request handler found for '" ++ toString method ++ toString "'" }
Instances For
Equations
- Lean.Server.RequestError.invalidParams message = { code := Lean.JsonRpc.ErrorCode.invalidParams, message := message }
Instances For
Equations
- Lean.Server.RequestError.internalError message = { code := Lean.JsonRpc.ErrorCode.internalError, message := message }
Instances For
Equations
- Lean.Server.RequestError.ofException e = do let __do_lift ← e.toMessageData.toString pure (Lean.Server.RequestError.internalError __do_lift)
Instances For
Instances For
Equations
- Lean.Server.RequestError.toLspResponseError id e = { id := id, code := e.code, message := e.message, data? := none }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
- rpcSessions : Lean.RBMap UInt64 (IO.Ref Lean.Server.FileWorker.RpcSession) compare
- srcSearchPath : Lean.SearchPath
- hLog : IO.FS.Stream
- initParams : Lean.Lsp.InitializeParams
Instances For
Equations
Instances For
Equations
Instances For
Workers execute request handlers in this monad.
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.
Equations
- Lean.Server.RequestM.readDoc = do let rc ← readThe Lean.Server.RequestContext pure rc.doc
Instances For
Equations
- t.asTask = do let rc ← readThe Lean.Server.RequestContext liftM (ReaderT.run t rc).asTask
Instances For
Equations
- Lean.Server.RequestM.mapTask t f = do let rc ← readThe Lean.Server.RequestContext liftM (EIO.mapTask (fun (x : α) => f x rc) t)
Instances For
Equations
- Lean.Server.RequestM.bindTask t f = do let rc ← readThe Lean.Server.RequestContext liftM (EIO.bindTask t fun (x : α) => f x rc)
Instances For
Equations
- notFoundX.waitFindSnapAux x✝ x = match x with | Except.error e => throw (Lean.Server.RequestError.ofIoError e) | Except.ok none => notFoundX | Except.ok (some snap) => x✝ snap
Instances For
Create a task which waits for the first snapshot matching p
, handles various errors,
and if a matching snapshot was found executes x
with it. If not found, the task executes
notFoundX
.
Equations
- Lean.Server.RequestM.withWaitFindSnap doc p notFoundX x = let findTask := IO.AsyncList.waitFind? p doc.cmdSnaps; Lean.Server.RequestM.mapTask findTask (notFoundX.waitFindSnapAux x)
Instances For
See withWaitFindSnap
.
Equations
- Lean.Server.RequestM.bindWaitFindSnap doc p notFoundX x = let findTask := IO.AsyncList.waitFind? p doc.cmdSnaps; Lean.Server.RequestM.bindTask findTask (notFoundX.waitFindSnapAux x)
Instances For
Create a task which waits for the snapshot containing lspPos
and executes f
with it.
If no such snapshot exists, the request fails with an error.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Finds the first CommandParsedSnapshot
fulfilling p
, asynchronously.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Finds the info tree of the first snapshot task containing pos
, asynchronously. The info tree may
be from a nested snapshot, such as a single tactic.
See SnapshotTree.findInfoTreeAtPos
for details on how the search is done.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
The global request handlers table #
We maintain a global map of LSP request handlers. This allows user code such as plugins to register its own handlers, for example to support ITP functionality such as goal state visualization.
For details of how to register one, see registerLspRequestHandler
.
- fileSource : Lean.Json → Except Lean.Server.RequestError Lean.Lsp.DocumentUri
- handle : Lean.Json → Lean.Server.RequestM (Lean.Server.RequestTask Lean.Json)
Instances For
NB: This method may only be called in initialize
blocks (user or builtin).
A registration consists of:
- a type of JSON-parsable request data
paramType
- a
FileSource
instance for it so the system knows where to route requests - a type of JSON-serializable response data
respType
- an actual
handler
which runs in theRequestM
monad and is expected to produce an asynchronousRequestTask
which does any waiting/computation
A handler task may be cancelled at any time, so it should check the cancellation token when possible to handle this cooperatively. Any exceptions thrown in a request handler will be reported to the client as LSP error responses.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Server.lookupLspRequestHandler method = do let __do_lift ← ST.Ref.get Lean.Server.requestHandlers pure (__do_lift.find? method)
Instances For
NB: This method may only be called in initialize
blocks (user or builtin).
Register another handler to invoke after the last one registered for a method. At least one handler for the method must have already been registered to perform chaining.
For more details on the registration of a handler, see registerLspRequestHandler
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.