Documentation

Lean.Data.Lsp.Basic

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.

@[reducible, inline]
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.Positions are used internally. character is accepted liberally: actual character := min(line length, character)

      Instances For
        structure Lean.Lsp.Range :
        Instances For

          A Location is a DocumentUri and a Range.

          Instances For

            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.

            reference

            • title : String

              Title of the command, like save.

            • command : String

              The identifier of the actual command handler.

            • arguments? : Option (Array Json)

              Arguments that the command handler should be invoked with.

            Instances For

              A snippet is a string that gets inserted into a document, and can afterwards be edited by the user in a structured way.

              Snippets contain instructions that specify how this structured editing should proceed. They are expressed in a domain-specific language based on one from TextMate, including the following constructs:

              • Designated positions for subsequent user input, called "tab stops" after their most frequently-used keybinding. They are denoted with $1, $2, and so forth. $0 denotes where the cursor should be positioned after all edits are completed, defaulting to the end of the string. Snippet tab stops are unrelated to tab stops used for indentation.
              • Tab stops with default values, called placeholders, written ${1:default}. The default may itself contain a tab stop or a further placeholder and multiple options to select from may be provided by surrounding them with |s and separating them with ,, as in ${1|if $2 then $3 else $4,if let $2 := $3 then $4 else $5|}.
              • One of a set of predefined variables that are replaced with their values. This includes the current line number ($TM_LINE_NUMBER) or the text that was selected when the snippet was invoked ($TM_SELECTED_TEXT).
              • Formatting instructions to modify variables using regular expressions or a set of predefined filters.

              The full syntax and semantics of snippets, including the available variables and the rules for escaping control characters, are described in the LSP specification.

              Instances For

                A textual edit applicable to a text document.

                reference

                • range : Range

                  The range of the text document to be manipulated. To insert text into a document create a range where start = end.

                • newText : String

                  The string to be inserted. For delete operations use an empty string.

                • leanExtSnippet? : Option SnippetString

                  If this field is present and the editor supports it, newText is ignored and an interactive snippet edit is performed instead.

                  The use of snippets in TextEdits is a Lean-specific extension to the LSP standard, so newText should still be set to a correct value as fallback in case the editor does not support this feature. Even editors that support snippets may not always use them; for instance, if the file is not already open, VS Code will perform a normal text edit in the background instead.

                • annotationId? : Option String

                  Identifier for annotated edit.

                  WorkspaceEdit has a changeAnnotations field that maps these identifiers to a ChangeAnnotation. 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.

                Instances For

                  An array of TextEdits to be performed in sequence.

                  Equations
                    Instances For

                      A batch of TextEdits to perform on a versioned text document.

                      reference

                      Instances For

                        Additional information that describes document changes.

                        reference

                        • 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.

                        • description? : Option String

                          A human-readable string which is rendered less prominent in the user interface.

                        Instances For

                          Options for CreateFile and RenameFile.

                          Instances For

                            Options for DeleteFile.

                            • recursive : Bool
                            • ignoreIfNotExists : Bool
                            Instances For
                              Instances For
                                Instances For
                                  Instances For

                                    A change to a file resource.

                                    reference

                                    Instances For

                                      A workspace edit represents changes to many resources managed in the workspace.

                                      reference

                                      • Changes to existing resources.

                                      • documentChanges? : Option (Array DocumentChange)

                                        Depending on the client capability workspace.workspaceEdit.resourceOperations document changes are either an array of TextDocumentEdits 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 above TextDocumentEdits 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 nor workspace.workspaceEdit.resourceOperations then only plain TextEdits using the changes property are supported.

                                      • changeAnnotations? : Option (RBMap String ChangeAnnotation compare)

                                        A map of change annotations that can be referenced in AnnotatedTextEdits or create, rename and delete file / folder operations.

                                        Whether clients honor this property depends on the client capability workspace.changeAnnotationSupport.

                                      Instances For

                                        The workspace/applyEdit request is sent from the server to the client to modify resource on the client side.

                                        reference

                                        • label? : Option String

                                          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.

                                        • The edits to apply.

                                        Instances For

                                          An item to transfer a text document from the client to the server.

                                          reference

                                          • 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.

                                          Instances For
                                            Instances For
                                              Instances For
                                                Equations
                                                  Instances For
                                                    Instances For
                                                      Instances For
                                                        @[reducible, inline]

                                                        Reference to the progress of some in-flight piece of work.

                                                        reference

                                                        Equations
                                                          Instances For

                                                            Params for JSON-RPC method $/progress request.

                                                            reference

                                                            Instances For
                                                              Equations
                                                                • kind : String
                                                                • message? : Option String

                                                                  More detailed associated progress message.

                                                                • cancellable : Bool

                                                                  Controls if a cancel button should show to allow the user to cancel the operation.

                                                                • percentage? : Option Nat

                                                                  Optional progress percentage to display (value 100 is considered 100%). If not provided infinite progress is assumed.

                                                                Instances For

                                                                  Notification to signal the start of progress reporting.

                                                                  Instances For

                                                                    Signals the end of progress reporting.

                                                                    Instances For
                                                                      Instances For
                                                                        Instances For

                                                                          reference

                                                                          • workDoneProgress : Bool
                                                                          Instances For
                                                                            Instances For