Defines most of the 'Basic Structures' in the LSP specification (https://microsoft.github.io/language-server-protocol/specifications/specification-current/), as well as some utilities.
Since LSP is Json-based, Ints/Nats are represented by Floats on the wire.
Equations
- Lean.Lsp.instInhabitedCancelParams = { default := { id := default } }
Equations
Equations
- Lean.Lsp.instToJsonCancelParams = { toJson := Lean.Lsp.toJsonCancelParams✝ }
Equations
- Lean.Lsp.instFromJsonCancelParams = { fromJson? := Lean.Lsp.fromJsonCancelParams✝ }
Equations
Instances For
We adopt the convention that zero-based UTF-16 positions as sent by LSP clients
are represented by Lsp.Position
while internally we mostly use String.Pos
UTF-8
offsets. For diagnostics, one-based Lean.Position
s are used internally.
character
is accepted liberally: actual character := min(line length, character)
Instances For
Equations
- Lean.Lsp.instInhabitedPosition = { default := { line := default, character := default } }
Equations
- Lean.Lsp.instBEqPosition = { beq := Lean.Lsp.beqPosition✝ }
Equations
- Lean.Lsp.instOrdPosition = { compare := Lean.Lsp.ordPosition✝ }
Equations
- Lean.Lsp.instHashablePosition = { hash := Lean.Lsp.hashPosition✝ }
Equations
- Lean.Lsp.instToJsonPosition = { toJson := Lean.Lsp.toJsonPosition✝ }
Equations
- Lean.Lsp.instFromJsonPosition = { fromJson? := Lean.Lsp.fromJsonPosition✝ }
Equations
- Lean.Lsp.instLTPosition = ltOfOrd
Equations
- Lean.Lsp.instLEPosition = leOfOrd
Equations
- Lean.Lsp.instInhabitedRange = { default := { start := default, end := default } }
Equations
- Lean.Lsp.instBEqRange = { beq := Lean.Lsp.beqRange✝ }
Equations
- Lean.Lsp.instHashableRange = { hash := Lean.Lsp.hashRange✝ }
Equations
- Lean.Lsp.instToJsonRange = { toJson := Lean.Lsp.toJsonRange✝ }
Equations
- Lean.Lsp.instFromJsonRange = { fromJson? := Lean.Lsp.fromJsonRange✝ }
Equations
- Lean.Lsp.instOrdRange = { compare := Lean.Lsp.ordRange✝ }
- uri : Lean.Lsp.DocumentUri
- range : Lean.Lsp.Range
A Location
is a DocumentUri
and a Range
.
Instances For
Equations
- Lean.Lsp.instInhabitedLocation = { default := { uri := default, range := default } }
Equations
- Lean.Lsp.instBEqLocation = { beq := Lean.Lsp.beqLocation✝ }
Equations
- Lean.Lsp.instToJsonLocation = { toJson := Lean.Lsp.toJsonLocation✝ }
Equations
- Lean.Lsp.instFromJsonLocation = { fromJson? := Lean.Lsp.fromJsonLocation✝ }
- originSelectionRange? : Option Lean.Lsp.Range
- targetUri : Lean.Lsp.DocumentUri
- targetRange : Lean.Lsp.Range
- targetSelectionRange : Lean.Lsp.Range
Instances For
Equations
- Lean.Lsp.instToJsonLocationLink = { toJson := Lean.Lsp.toJsonLocationLink✝ }
Equations
- Lean.Lsp.instFromJsonLocationLink = { fromJson? := Lean.Lsp.fromJsonLocationLink✝ }
- title : String
Title of the command, like
save
. - command : String
The identifier of the actual command handler.
Arguments that the command handler should be invoked with.
Represents a reference to a client editor command.
NOTE: No specific commands are specified by LSP, hence possible commands need to be announced as capabilities.
Instances For
Equations
- Lean.Lsp.instToJsonCommand = { toJson := Lean.Lsp.toJsonCommand✝ }
Equations
- Lean.Lsp.instFromJsonCommand = { fromJson? := Lean.Lsp.fromJsonCommand✝ }
- range : Lean.Lsp.Range
- newText : String
The string to be inserted. For delete operations use an empty string.
Identifier for annotated edit.
WorkspaceEdit
has achangeAnnotations
field that maps these identifiers to aChangeAnnotation
. By annotating an edit you can add a description of what the edit will do and also control whether the user is presented with a prompt before applying the edit. reference.
A textual edit applicable to a text document.
Instances For
Equations
- Lean.Lsp.instToJsonTextEdit = { toJson := Lean.Lsp.toJsonTextEdit✝ }
Equations
- Lean.Lsp.instFromJsonTextEdit = { fromJson? := Lean.Lsp.fromJsonTextEdit✝ }
Equations
- Lean.Lsp.instFromJsonTextEditBatch = { fromJson? := Lean.fromJson? }
Equations
- Lean.Lsp.instToJsonTextEditBatch = { toJson := Lean.toJson }
Equations
- Lean.Lsp.instEmptyCollectionTextEditBatch = { emptyCollection := #[] }
Equations
- Lean.Lsp.instCoeTextEditTextEditBatch = { coe := fun te => #[te] }
- uri : Lean.Lsp.DocumentUri
Instances For
- textDocument : Lean.Lsp.VersionedTextDocumentIdentifier
- edits : Lean.Lsp.TextEditBatch
A batch of TextEdit
s to perform on a versioned text document.
Instances For
Equations
Equations
- Lean.Lsp.instFromJsonTextDocumentEdit = { fromJson? := Lean.Lsp.fromJsonTextDocumentEdit✝ }
- label : String
A human-readable string describing the actual change. The string is rendered prominent in the user interface.
- needsConfirmation : Bool
A flag which indicates that user confirmation is needed before applying the change.
A human-readable string which is rendered less prominent in the user interface.
Additional information that describes document changes.
Instances For
Equations
Equations
- Lean.Lsp.instFromJsonChangeAnnotation = { fromJson? := Lean.Lsp.fromJsonChangeAnnotation✝ }
Options for CreateFile
and RenameFile
.
Instances For
Options for DeleteFile
.
Instances For
- uri : Lean.Lsp.DocumentUri
- options? : Option Lean.Lsp.CreateFile.Options
Instances For
Equations
- Lean.Lsp.instToJsonCreateFile = { toJson := Lean.Lsp.toJsonCreateFile✝ }
Equations
- Lean.Lsp.instFromJsonCreateFile = { fromJson? := Lean.Lsp.fromJsonCreateFile✝ }
- oldUri : Lean.Lsp.DocumentUri
- newUri : Lean.Lsp.DocumentUri
- options? : Option Lean.Lsp.CreateFile.Options
Instances For
Equations
- Lean.Lsp.instToJsonRenameFile = { toJson := Lean.Lsp.toJsonRenameFile✝ }
Equations
- Lean.Lsp.instFromJsonRenameFile = { fromJson? := Lean.Lsp.fromJsonRenameFile✝ }
- uri : Lean.Lsp.DocumentUri
- options? : Option Lean.Lsp.DeleteFile.Options
Instances For
Equations
- Lean.Lsp.instToJsonDeleteFile = { toJson := Lean.Lsp.toJsonDeleteFile✝ }
Equations
- Lean.Lsp.instFromJsonDeleteFile = { fromJson? := Lean.Lsp.fromJsonDeleteFile✝ }
- create: Lean.Lsp.CreateFile → Lean.Lsp.DocumentChange
- rename: Lean.Lsp.RenameFile → Lean.Lsp.DocumentChange
- delete: Lean.Lsp.DeleteFile → Lean.Lsp.DocumentChange
- edit: Lean.Lsp.TextDocumentEdit → Lean.Lsp.DocumentChange
A change to a file resource.
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.
- changes : Lean.RBMap Lean.Lsp.DocumentUri Lean.Lsp.TextEditBatch compare
Changes to existing resources.
- documentChanges : Array Lean.Lsp.DocumentChange
Depending on the client capability
workspace.workspaceEdit.resourceOperations
document changes are either an array ofTextDocumentEdit
s to express changes to n different text documents where each text document edit addresses a specific version of a text document. Or it can contain aboveTextDocumentEdit
s mixed with create, rename and delete file / folder operations.Whether a client supports versioned document edits is expressed via
workspace.workspaceEdit.documentChanges
client capability.If a client neither supports
documentChanges
norworkspace.workspaceEdit.resourceOperations
then only plainTextEdit
s using thechanges
property are supported. - changeAnnotations : Lean.RBMap String Lean.Lsp.ChangeAnnotation compare
A map of change annotations that can be referenced in
AnnotatedTextEdit
s or create, rename and delete file / folder operations.Whether clients honor this property depends on the client capability
workspace.changeAnnotationSupport
.
A workspace edit represents changes to many resources managed in the workspace.
Instances For
Equations
- Lean.Lsp.instToJsonWorkspaceEdit = { toJson := Lean.Lsp.toJsonWorkspaceEdit✝ }
Equations
- Lean.Lsp.instFromJsonWorkspaceEdit = { fromJson? := Lean.Lsp.fromJsonWorkspaceEdit✝ }
Equations
- Lean.Lsp.WorkspaceEdit.instEmptyCollectionWorkspaceEdit = { emptyCollection := { changes := ∅, documentChanges := ∅, changeAnnotations := ∅ } }
Equations
- One or more equations did not get rendered due to their size.
Equations
- Lean.Lsp.WorkspaceEdit.ofTextDocumentEdit e = { changes := ∅, documentChanges := #[Lean.Lsp.DocumentChange.edit e], changeAnnotations := ∅ }
Instances For
Equations
- Lean.Lsp.WorkspaceEdit.ofTextEdit uri te = let doc := { uri := uri, version? := some 0 }; Lean.Lsp.WorkspaceEdit.ofTextDocumentEdit { textDocument := doc, edits := #[te] }
Instances For
An optional label of the workspace edit. This label is presented in the user interface for example on an undo stack to undo the workspace edit.
- edit : Lean.Lsp.WorkspaceEdit
The edits to apply.
The workspace/applyEdit
request is sent from the server to the client to modify resource on the client side.
Instances For
- uri : Lean.Lsp.DocumentUri
The text document's URI.
- languageId : String
The text document's language identifier.
- version : Nat
The version number of this document (it will increase after each change, including undo/redo).
- text : String
The content of the opened text document.
An item to transfer a text document from the client to the server.
Instances For
Equations
Equations
- Lean.Lsp.instFromJsonTextDocumentItem = { fromJson? := Lean.Lsp.fromJsonTextDocumentItem✝ }
- textDocument : Lean.Lsp.TextDocumentIdentifier
- position : Lean.Lsp.Position
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- Lean.Lsp.instToJsonDocumentFilter = { toJson := Lean.Lsp.toJsonDocumentFilter✝ }
Equations
- Lean.Lsp.instFromJsonDocumentFilter = { fromJson? := Lean.Lsp.fromJsonDocumentFilter✝ }
Instances For
Equations
- Lean.Lsp.instFromJsonDocumentSelector = { fromJson? := Lean.fromJson? }
Equations
- Lean.Lsp.instToJsonDocumentSelector = { toJson := Lean.toJson }
- documentSelector? : Option Lean.Lsp.DocumentSelector
Instances For
- plaintext: Lean.Lsp.MarkupKind
- markdown: Lean.Lsp.MarkupKind
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.Lsp.instToJsonMarkupContent = { toJson := Lean.Lsp.toJsonMarkupContent✝ }
Equations
- Lean.Lsp.instFromJsonMarkupContent = { fromJson? := Lean.Lsp.fromJsonMarkupContent✝ }
Reference to the progress of some in-flight piece of work.
Equations
Instances For
Equations
- Lean.Lsp.instToJsonProgressParams = { toJson := Lean.Lsp.toJsonProgressParams✝ }
- workDoneToken? : Option Lean.Lsp.ProgressToken
Instances For
- partialResultToken? : Option Lean.Lsp.ProgressToken