Chains two streams by creating a new stream s.t. writing to it
just writes to a but reading from it also duplicates the read output
into b, c.f. a | tee b on Unix.
NB: if a is written to but this stream is never read from,
the output will not be duplicated. Use this if you only care
about the data that was actually read.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Prefixes all written outputs with pre.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Meta-Data of a document.
- uri : Lsp.DocumentUri
URI where the document is located.
- version : Nat
Version number of the document. Incremented whenever the document is edited.
- text : FileMap
Current text of the document. It is maintained such that it is normalized using
String.crlfToLf, which preserves logical line/column numbers. (Note: we assume that edit operations never split or merge\r\nline endings.) - dependencyBuildMode : Lsp.DependencyBuildMode
Controls when dependencies of the document are built on
textDocument/didOpennotifications.
Instances For
Extracts an InputContext from doc.
Equations
- doc.mkInputContext = { input := doc.text.source, fileName := ((System.Uri.fileUriToPath? doc.uri).getD { toString := doc.uri }).toString, fileMap := doc.text }
Instances For
Duplicates an I/O stream to a log file fName in LEAN_SERVER_LOG_DIR
if that envvar is set.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Returns the document contents with the change applied.
Equations
- Lean.Server.applyDocumentChange oldText (Lean.Lsp.TextDocumentContentChangeEvent.rangeChange range newText) = Lean.Server.replaceLspRange oldText range newText
- Lean.Server.applyDocumentChange oldText (Lean.Lsp.TextDocumentContentChangeEvent.fullChange newText) = newText.crlfToLf.toFileMap
Instances For
Returns the document contents with all changes applied.
Equations
- Lean.Server.foldDocumentChanges changes oldText = Array.foldl Lean.Server.applyDocumentChange oldText changes
Instances For
Constructs a textDocument/publishDiagnostics notification.
Equations
- Lean.Server.mkPublishDiagnosticsNotification m diagnostics = { method := "textDocument/publishDiagnostics", param := { uri := m.uri, version? := some ↑m.version, diagnostics := diagnostics } }
Instances For
Constructs a $/lean/fileProgress notification.
Equations
- Lean.Server.mkFileProgressNotification m processing = { method := "$/lean/fileProgress", param := { textDocument := { uri := m.uri, version? := some m.version }, processing := processing } }
Instances For
Constructs a $/lean/fileProgress notification from the given position onwards.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constructs a $/lean/fileProgress notification marking processing as done.
Equations
Instances For
Equations
- Lean.Server.mkApplyWorkspaceEditRequest params = { id := Lean.JsonRpc.RequestID.str "workspace/applyEdit", method := "workspace/applyEdit", param := params }
Instances For
Converts an UTF-8-based String.range in text to an equivalent LSP UTF-16-based Lsp.Range
in text.
Equations
- String.Range.toLspRange text r = { start := text.utf8PosToLspPos r.start, «end» := text.utf8PosToLspPos r.stop }
Instances For
Attempts to find a module name in the roots denoted by srcSearchPath for uri.
Fails if uri is not a file:// uri or if the given uri cannot be found in srcSearchPath.