Expand description
Language Server Protocol types for Rust.
Based on: https://microsoft.github.io/language-server-protocol/specification
This library uses the URL crate for parsing URIs. Note that there is
some confusion on the meaning of URLs vs URIs:
http://stackoverflow.com/a/28865728/393898. According to that
information, on the classical sense of “URLs”, “URLs” are a subset of
URIs, But on the modern/new meaning of URLs, they are the same as
URIs. The important take-away aspect is that the URL crate should be
able to parse any URI, such as urn:isbn:0451450523
.
Re-exports§
pub use selection_range::*;
Modules§
- In this module we only define constants for lsp specific error codes. There are other error codes that are defined in the JSON RPC specification.
- Types of Language Server Index Format (LSIF). LSIF is a standard format for language servers or other programming tools to dump their knowledge about a workspace.
Macros§
Structs§
- A special text edit with an additional change annotation.
- Represents an incoming call, e.g. a caller of a method or constructor.
- Represents an outgoing call, e.g. calling a getter from a method or a method from a constructor etc.
- Additional information that describes document changes.
- Where ClientCapabilities are currently empty:
- Whether the client supports resolving additional code action properties via a separate
codeAction/resolve
request. - Contains additional diagnostic information about the context in which a code action is run.
- Params for the CodeActionRequest
- The reason why code actions were requested.
- A code lens represents a command that should be shown along with source text, like the number of references, a way to run tests, etc.
- Code Lens options.
- Represents a reference to a command. Provides a title which will be used to represent a command in the UI. Commands are identified by a string identifier. The recommended way to handle commands is to implement their execution on the server side if the client and server provides the corresponding capabilities. Alternatively the tool extension code could handle the command. The protocol currently doesn’t specify a set of well-known commands.
- The kind of a completion entry.
- Additional details for a completion item label.
- Represents a collection of completion items to be presented in the editor.
- Completion options.
- How a completion was triggered.
- Create file operation
- Options to create a file.
- The parameters sent in notifications/requests for user-initiated creation of files.
- Delete file operation
- Delete file options
- The parameters sent in notifications/requests for user-initiated deletes of files.
- Represents a diagnostic, such as a compiler error or warning. Diagnostic objects are only valid in the scope of a resource.
- Client capabilities specific to diagnostic pull requests.
- Diagnostic options.
- Diagnostic registration options.
- Represents a related message and source code location for a diagnostic. This should be used to point to code locations that cause or related to a diagnostics, e.g when duplicating a symbol in a scope.
- Cancellation data returned from a diagnostic request.
- The protocol currently supports the following diagnostic severities:
- The diagnostic tags.
- Workspace client capabilities specific to diagnostic pull requests.
- Describe options to be used when registered for text document change events.
- Parameters of the document diagnostic request.
- A partial result for a document diagnostic report.
- A document filter denotes a document through properties like language, schema or pattern. Examples are a filter that applies to TypeScript files on disk or a filter the applies to JSON files with name package.json:
- A document highlight is a range inside a text document which deserves special attention. Usually a document highlight is visualized by changing the background color of its range.
- A document highlight kind.
- A document link is a range in a text document that links to an internal or external resource, like another text document or a web site.
- Format document on type options
- Extends TextDocumentRegistrationOptions
- Represents programming constructs like variables, classes, interfaces etc. that appear in a document. Document symbols can be hierarchical and they have two ranges: one that encloses its definition and one that points to its most interesting range, e.g. the range of an identifier.
- Execute command options.
- Execute command registration options.
- The file event type.
- Represents information on a file/folder create.
- Represents information on a file/folder delete.
- An event describing a file change.
- A filter to describe in which file operation requests or notifications the server is interested in.
- A pattern to describe in which file operation requests or notifications the server is interested in.
- Matching options for the file operation pattern.
- The options to register for file operations.
- Represents information on a file/folder rename.
- Represents a folding range.
- Value-object describing what options formatting should use.
- A diagnostic report with a full set of problems.
- The result of a hover request.
- Hover options.
- Inlay hint information.
- Inlay hint client capabilities.
- Inlay hint kinds.
- An inlay hint label part allows for interactive and composite labels of inlay hints.
- Inlay hint options used during static registration.
- A parameter literal used in inlay hint requests.
- Inlay hint options used during static or dynamic registration.
- Inlay hint client capabilities.
- Client workspace capabilities specific to inlay hints.
- @since 3.17.0
- Provide an inline value through an expression evaluation.
- Inline value options used during static registration.
- A parameter literal used in inline value requests.
- Inline value options used during static or dynamic registration.
- Provide inline value as text.
- Provide inline value through a variable lookup.
- Client workspace capabilities specific to inline values.
- A special text edit to provide an insert and a replace operation.
- Defines how to interpret the insert text in a completion item
- How whitespace and indentation is handled during completion item insertion.
- Represents a location inside a resource, such as a line inside a text file.
- Represents a link between a source and a target location.
- A
MarkupContent
literal represents a string value which content can be represented in different formats. Currentlyplaintext
andmarkdown
are supported formats. AMarkupContent
is usually used in documentation properties of result literals likeCompletionItem
orSignatureInformation
. If the format ismarkdown
the content should follow the GitHub Flavored Markdown Specification. - Moniker definition to match LSIF 0.5 moniker definition.
- An identifier which optionally denotes a specific version of a text document. This information usually flows from the server to the client
- Represents a parameter of a callable-signature. A parameter can have a label and a doc-comment.
- A parameter literal used to pass a partial result token.
- Position in a text document expressed as zero-based line and character offset. A position is between two characters like an ‘insert’ cursor in a editor.
- A type indicating how positions are encoded, specifically what column offsets mean.
- A previous result ID in a workspace pull request.
- The progress notification is sent from the server to the client to ask the client to indicate progress.
- A range in a text document expressed as (zero-based) start and end positions. A range is comparable to a selection in an editor. Therefore the end position is exclusive.
- General parameters to to register for a capability.
- A full diagnostic report with a set of related documents.
- An unchanged diagnostic report with a set of related documents.
- A relative pattern is a helper to construct glob patterns that are matched relatively to a base URI. The common value for a
baseUri
is a workspace folder root, but it can be another absolute URI as well. - Rename file operation
- Rename file options
- The parameters sent in notifications/requests for user-initiated renames of files.
- Save options.
- The actual tokens.
- A set of predefined token modifiers. This set is not fixed and clients can specify additional token types via the corresponding client capabilities.
- A set of predefined token types. This set is not fixed and clients can specify additional token types via the corresponding client capabilities.
- @since 3.16.0
- Capabilities specific to the
textDocument/semanticTokens/*
requests. - @since 3.16.0
- @since 3.16.0
- @since 3.16.0
- @since 3.16.0
- @since 3.16.0
- Client capabilities for the show document request.
- Params to show a document.
- The result of an show document request.
- Show message request client capabilities
- Signature help represents the signature of something callable. There can be multiple signature but only one active and only one active parameter.
- Signature help options.
- Signature help options.
- Signature help options.
- Represents the signature of something callable. A signature can have a label, like a function-name, a doc-comment, and a set of parameters.
- Client capability that signals how the client handles stale requests (e.g. a request for which the client will not process the response anymore since the information is outdated).
- Represents information about programming constructs like variables, classes, interfaces etc.
- A symbol kind.
- Specific capabilities for the
SymbolKind
in theworkspace/symbol
request. - Symbol tags are extra annotations that tweak the rendering of a symbol.
- Describe options to be used when registering for text document change events.
- Text document specific client capabilities.
- An event describing a change to a text document. If range and rangeLength are omitted the new text is considered to be the full content of the document.
- Describes textual changes on a single text document. The text document is referred to as a
OptionalVersionedTextDocumentIdentifier
to allow clients to check the text document version before an edit is applied. ATextDocumentEdit
describes all changes on a version Si and after they are applied move the document to version Si+1. So the creator of aTextDocumentEdit
doesn’t need to sort the array or do any kind of ordering. However the edits must be non overlapping. - Text documents are identified using a URI. On the protocol level, URIs are passed as strings.
- An item to transfer a text document from the client to the server.
- A parameter literal used in requests to pass a text document and a position inside that document.
- Since most of the registration options require to specify a document selector there is a base interface that can be used.
- Represents reasons why a text document is saved.
- Defines how the host (editor) should sync document changes to the language server.
- A textual edit applicable to a text document.
- A diagnostic report indicating that the last returned report is still accurate.
- General parameters to unregister a capability.
- A parsed URL record.
- An identifier to denote a specific version of a text document. This information usually flows from the client to the server.
- The parameters send in a will save text document notification.
- Window specific client capabilities.
- The
window/workDoneProgress/cancel
notification is sent from the client to the server to cancel a progress initiated on the server side using thewindow/workDoneProgress/create
. - The
window/workDoneProgress/create
request is sent from the server to the client to ask the client to create a work done progress. - An optional token that a server can use to report work done progress
- Workspace specific client capabilities.
- Parameters of the workspace diagnostic request.
- A workspace diagnostic report.
- A partial result for a workspace diagnostic report.
- A workspace edit represents changes to many resources managed in the workspace. The edit should either provide
changes
ordocumentChanges
. If the client can handle versioned document edits and ifdocumentChanges
are present, the latter are preferred overchanges
. - The workspace folder change event.
- A full document diagnostic report for a workspace diagnostic result.
- A special workspace symbol that supports locations without a range
- The parameters of a Workspace Symbol Request.
- An unchanged document diagnostic report for a workspace diagnostic result.
Enums§
- The result of a document diagnostic pull request.
- The document diagnostic report kinds.
- A pattern kind describing if a glob pattern matches a file a folder or both.
- Enum of known range kinds
- The glob pattern. Either a string pattern or a relative pattern.
- GotoDefinition response can be single location, or multiple Locations or a link.
- Hover contents could be single entry or multiple entries.
- Inline value information can be provided by different means:
- MarkedString can be used to render human readable text. It is either a markdown string or a code-block that provides a language and a code snippet. The language identifier is semantically equal to the optional language identifier in fenced code blocks in GitHub issues.
- Describes the content type that a client supports in various result literals like
Hover
,ParameterInfo
orCompletionItem
. - The moniker kind.
- A TraceValue represents the level of verbosity with which the server systematically reports its execution trace using
LogTrace
notifications. - Moniker uniqueness level to define scope of the moniker.
- A workspace diagnostic document report.
Type Aliases§
- An identifier referring to a change annotation managed by a workspace edit.
- response for CodeActionRequest
- A document selector is the combination of one or many document filters.
- The LSP any type
- LSP arrays.
- LSP object definition.
- The glob pattern to watch relative to the base path. Glob patterns can have the following syntax: