status-go/vendor/go.lsp.dev/protocol/capabilities_client.go

1062 lines
46 KiB
Go

// SPDX-FileCopyrightText: 2021 The Go Language Server Authors
// SPDX-License-Identifier: BSD-3-Clause
package protocol
import "strconv"
// ClientCapabilities now define capabilities for dynamic registration, workspace and text document features
// the client supports.
//
// The experimental can be used to pass experimental capabilities under development.
//
// For future compatibility a ClientCapabilities object literal can have more properties set than currently defined.
// Servers receiving a ClientCapabilities object literal with unknown properties should ignore these properties.
//
// A missing property should be interpreted as an absence of the capability.
// If a missing property normally defines sub properties, all missing sub properties should be interpreted
// as an absence of the corresponding capability.
type ClientCapabilities struct {
// Workspace specific client capabilities.
Workspace *WorkspaceClientCapabilities `json:"workspace,omitempty"`
// TextDocument specific client capabilities.
TextDocument *TextDocumentClientCapabilities `json:"textDocument,omitempty"`
// Window specific client capabilities.
Window *WindowClientCapabilities `json:"window,omitempty"`
// General client capabilities.
//
// @since 3.16.0.
General *GeneralClientCapabilities `json:"general,omitempty"`
// Experimental client capabilities.
Experimental interface{} `json:"experimental,omitempty"`
}
// WorkspaceClientCapabilities Workspace specific client capabilities.
type WorkspaceClientCapabilities struct {
// The client supports applying batch edits to the workspace by supporting
// the request "workspace/applyEdit".
ApplyEdit bool `json:"applyEdit,omitempty"`
// WorkspaceEdit capabilities specific to `WorkspaceEdit`s.
WorkspaceEdit *WorkspaceClientCapabilitiesWorkspaceEdit `json:"workspaceEdit,omitempty"`
// DidChangeConfiguration capabilities specific to the `workspace/didChangeConfiguration` notification.
DidChangeConfiguration *DidChangeConfigurationWorkspaceClientCapabilities `json:"didChangeConfiguration,omitempty"`
// DidChangeWatchedFiles capabilities specific to the `workspace/didChangeWatchedFiles` notification.
DidChangeWatchedFiles *DidChangeWatchedFilesWorkspaceClientCapabilities `json:"didChangeWatchedFiles,omitempty"`
// Symbol capabilities specific to the "workspace/symbol" request.
Symbol *WorkspaceSymbolClientCapabilities `json:"symbol,omitempty"`
// ExecuteCommand capabilities specific to the "workspace/executeCommand" request.
ExecuteCommand *ExecuteCommandClientCapabilities `json:"executeCommand,omitempty"`
// WorkspaceFolders is the client has support for workspace folders.
//
// @since 3.6.0.
WorkspaceFolders bool `json:"workspaceFolders,omitempty"`
// Configuration is the client supports "workspace/configuration" requests.
//
// @since 3.6.0.
Configuration bool `json:"configuration,omitempty"`
// SemanticTokens is the capabilities specific to the semantic token requests scoped to the
// workspace.
//
// @since 3.16.0.
SemanticTokens *SemanticTokensWorkspaceClientCapabilities `json:"semanticTokens,omitempty"`
// CodeLens is the Capabilities specific to the code lens requests scoped to the
// workspace.
//
// @since 3.16.0.
CodeLens *CodeLensWorkspaceClientCapabilities `json:"codeLens,omitempty"`
// FileOperations is the client has support for file requests/notifications.
//
// @since 3.16.0.
FileOperations *WorkspaceClientCapabilitiesFileOperations `json:"fileOperations,omitempty"`
}
// WorkspaceClientCapabilitiesWorkspaceEdit capabilities specific to "WorkspaceEdit"s.
type WorkspaceClientCapabilitiesWorkspaceEdit struct {
// DocumentChanges is the client supports versioned document changes in `WorkspaceEdit`s
DocumentChanges bool `json:"documentChanges,omitempty"`
// FailureHandling is the failure handling strategy of a client if applying the workspace edit
// fails.
//
// Mostly FailureHandlingKind.
FailureHandling string `json:"failureHandling,omitempty"`
// ResourceOperations is the resource operations the client supports. Clients should at least
// support "create", "rename" and "delete" files and folders.
ResourceOperations []string `json:"resourceOperations,omitempty"`
// NormalizesLineEndings whether the client normalizes line endings to the client specific
// setting.
// If set to `true` the client will normalize line ending characters
// in a workspace edit to the client specific new line character(s).
//
// @since 3.16.0.
NormalizesLineEndings bool `json:"normalizesLineEndings,omitempty"`
// ChangeAnnotationSupport whether the client in general supports change annotations on text edits,
// create file, rename file and delete file changes.
//
// @since 3.16.0.
ChangeAnnotationSupport *WorkspaceClientCapabilitiesWorkspaceEditChangeAnnotationSupport `json:"changeAnnotationSupport,omitempty"`
}
// FailureHandlingKind is the kind of failure handling .
type FailureHandlingKind string
const (
// FailureHandlingKindAbort applying the workspace change is simply aborted if one of the changes provided
// fails. All operations executed before the failing operation stay executed.
FailureHandlingKindAbort FailureHandlingKind = "abort"
// FailureHandlingKindTransactional all operations are executed transactional. That means they either all
// succeed or no changes at all are applied to the workspace.
FailureHandlingKindTransactional FailureHandlingKind = "transactional"
// FailureHandlingKindTextOnlyTransactional if the workspace edit contains only textual file changes they are executed transactional.
// If resource changes (create, rename or delete file) are part of the change the failure
// handling strategy is abort.
FailureHandlingKindTextOnlyTransactional FailureHandlingKind = "textOnlyTransactional"
// FailureHandlingKindUndo the client tries to undo the operations already executed. But there is no
// guarantee that this is succeeding.
FailureHandlingKindUndo FailureHandlingKind = "undo"
)
// WorkspaceClientCapabilitiesWorkspaceEditChangeAnnotationSupport is the ChangeAnnotationSupport of WorkspaceClientCapabilitiesWorkspaceEdit.
//
// @since 3.16.0.
type WorkspaceClientCapabilitiesWorkspaceEditChangeAnnotationSupport struct {
// GroupsOnLabel whether the client groups edits with equal labels into tree nodes,
// for instance all edits labeled with "Changes in Strings" would
// be a tree node.
GroupsOnLabel bool `json:"groupsOnLabel,omitempty"`
}
// DidChangeConfigurationWorkspaceClientCapabilities capabilities specific to the "workspace/didChangeConfiguration" notification.
//
// @since 3.16.0.
type DidChangeConfigurationWorkspaceClientCapabilities struct {
// DynamicRegistration whether the did change configuration notification supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
// DidChangeWatchedFilesWorkspaceClientCapabilities capabilities specific to the "workspace/didChangeWatchedFiles" notification.
//
// @since 3.16.0.
type DidChangeWatchedFilesWorkspaceClientCapabilities struct {
// Did change watched files notification supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
// WorkspaceSymbolClientCapabilities capabilities specific to the `workspace/symbol` request.
//
// WorkspaceSymbolClientCapabilities is the workspace symbol request is sent from the client to the server to
// list project-wide symbols matching the query string.
type WorkspaceSymbolClientCapabilities struct {
// DynamicRegistration is the Symbol request supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// SymbolKindCapabilities is the specific capabilities for the SymbolKindCapabilities in the "workspace/symbol" request.
SymbolKind *SymbolKindCapabilities `json:"symbolKind,omitempty"`
// TagSupport is the client supports tags on `SymbolInformation`.
// Clients supporting tags have to handle unknown tags gracefully.
//
// @since 3.16.0
TagSupport *TagSupportCapabilities `json:"tagSupport,omitempty"`
}
type SymbolKindCapabilities struct {
// ValueSet is the symbol kind values the client supports. When this
// property exists the client also guarantees that it will
// handle values outside its set gracefully and falls back
// to a default value when unknown.
//
// If this property is not present the client only supports
// the symbol kinds from `File` to `Array` as defined in
// the initial version of the protocol.
ValueSet []SymbolKind `json:"valueSet,omitempty"`
}
type TagSupportCapabilities struct {
// ValueSet is the tags supported by the client.
ValueSet []SymbolTag `json:"valueSet,omitempty"`
}
// ExecuteCommandClientCapabilities capabilities specific to the "workspace/executeCommand" request.
type ExecuteCommandClientCapabilities struct {
// DynamicRegistration Execute command supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
// SemanticTokensWorkspaceClientCapabilities capabilities specific to the "workspace/semanticToken" request.
//
// @since 3.16.0.
type SemanticTokensWorkspaceClientCapabilities struct {
// RefreshSupport whether the client implementation supports a refresh request sent from
// the server to the client.
//
// Note that this event is global and will force the client to refresh all
// semantic tokens currently shown. It should be used with absolute care
// and is useful for situation where a server for example detect a project
// wide change that requires such a calculation.
RefreshSupport bool `json:"refreshSupport,omitempty"`
}
// CodeLensWorkspaceClientCapabilities capabilities specific to the "workspace/codeLens" request.
//
// @since 3.16.0.
type CodeLensWorkspaceClientCapabilities struct {
// RefreshSupport whether the client implementation supports a refresh request sent from the
// server to the client.
//
// Note that this event is global and will force the client to refresh all
// code lenses currently shown. It should be used with absolute care and is
// useful for situation where a server for example detect a project wide
// change that requires such a calculation.
RefreshSupport bool `json:"refreshSupport,omitempty"`
}
// WorkspaceClientCapabilitiesFileOperations capabilities specific to the fileOperations.
//
// @since 3.16.0.
type WorkspaceClientCapabilitiesFileOperations struct {
// DynamicRegistration whether the client supports dynamic registration for file
// requests/notifications.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// DidCreate is the client has support for sending didCreateFiles notifications.
DidCreate bool `json:"didCreate,omitempty"`
// WillCreate is the client has support for sending willCreateFiles requests.
WillCreate bool `json:"willCreate,omitempty"`
// DidRename is the client has support for sending didRenameFiles notifications.
DidRename bool `json:"didRename,omitempty"`
// WillRename is the client has support for sending willRenameFiles requests.
WillRename bool `json:"willRename,omitempty"`
// DidDelete is the client has support for sending didDeleteFiles notifications.
DidDelete bool `json:"didDelete,omitempty"`
// WillDelete is the client has support for sending willDeleteFiles requests.
WillDelete bool `json:"willDelete,omitempty"`
}
// TextDocumentClientCapabilities Text document specific client capabilities.
type TextDocumentClientCapabilities struct {
// Synchronization defines which synchronization capabilities the client supports.
Synchronization *TextDocumentSyncClientCapabilities `json:"synchronization,omitempty"`
// Completion Capabilities specific to the "textDocument/completion".
Completion *CompletionTextDocumentClientCapabilities `json:"completion,omitempty"`
// Hover capabilities specific to the "textDocument/hover".
Hover *HoverTextDocumentClientCapabilities `json:"hover,omitempty"`
// SignatureHelp capabilities specific to the "textDocument/signatureHelp".
SignatureHelp *SignatureHelpTextDocumentClientCapabilities `json:"signatureHelp,omitempty"`
// Declaration capabilities specific to the "textDocument/declaration".
Declaration *DeclarationTextDocumentClientCapabilities `json:"declaration,omitempty"`
// Definition capabilities specific to the "textDocument/definition".
//
// @since 3.14.0.
Definition *DefinitionTextDocumentClientCapabilities `json:"definition,omitempty"`
// TypeDefinition capabilities specific to the "textDocument/typeDefinition".
//
// @since 3.6.0.
TypeDefinition *TypeDefinitionTextDocumentClientCapabilities `json:"typeDefinition,omitempty"`
// Implementation capabilities specific to the "textDocument/implementation".
//
// @since 3.6.0.
Implementation *ImplementationTextDocumentClientCapabilities `json:"implementation,omitempty"`
// References capabilities specific to the "textDocument/references".
References *ReferencesTextDocumentClientCapabilities `json:"references,omitempty"`
// DocumentHighlight capabilities specific to the "textDocument/documentHighlight".
DocumentHighlight *DocumentHighlightClientCapabilities `json:"documentHighlight,omitempty"`
// DocumentSymbol capabilities specific to the "textDocument/documentSymbol".
DocumentSymbol *DocumentSymbolClientCapabilities `json:"documentSymbol,omitempty"`
// CodeAction capabilities specific to the "textDocument/codeAction".
CodeAction *CodeActionClientCapabilities `json:"codeAction,omitempty"`
// CodeLens capabilities specific to the "textDocument/codeLens".
CodeLens *CodeLensClientCapabilities `json:"codeLens,omitempty"`
// DocumentLink capabilities specific to the "textDocument/documentLink".
DocumentLink *DocumentLinkClientCapabilities `json:"documentLink,omitempty"`
// ColorProvider capabilities specific to the "textDocument/documentColor" and the
// "textDocument/colorPresentation" request.
//
// @since 3.6.0.
ColorProvider *DocumentColorClientCapabilities `json:"colorProvider,omitempty"`
// Formatting Capabilities specific to the "textDocument/formatting" request.
Formatting *DocumentFormattingClientCapabilities `json:"formatting,omitempty"`
// RangeFormatting Capabilities specific to the "textDocument/rangeFormatting" request.
RangeFormatting *DocumentRangeFormattingClientCapabilities `json:"rangeFormatting,omitempty"`
// OnTypeFormatting Capabilities specific to the "textDocument/onTypeFormatting" request.
OnTypeFormatting *DocumentOnTypeFormattingClientCapabilities `json:"onTypeFormatting,omitempty"`
// PublishDiagnostics capabilities specific to "textDocument/publishDiagnostics".
PublishDiagnostics *PublishDiagnosticsClientCapabilities `json:"publishDiagnostics,omitempty"`
// Rename capabilities specific to the "textDocument/rename".
Rename *RenameClientCapabilities `json:"rename,omitempty"`
// FoldingRange capabilities specific to "textDocument/foldingRange" requests.
//
// @since 3.10.0.
FoldingRange *FoldingRangeClientCapabilities `json:"foldingRange,omitempty"`
// SelectionRange capabilities specific to "textDocument/selectionRange" requests.
//
// @since 3.15.0.
SelectionRange *SelectionRangeClientCapabilities `json:"selectionRange,omitempty"`
// CallHierarchy capabilities specific to the various call hierarchy requests.
//
// @since 3.16.0.
CallHierarchy *CallHierarchyClientCapabilities `json:"callHierarchy,omitempty"`
// SemanticTokens capabilities specific to the various semantic token requests.
//
// @since 3.16.0.
SemanticTokens *SemanticTokensClientCapabilities `json:"semanticTokens,omitempty"`
// LinkedEditingRange capabilities specific to the "textDocument/linkedEditingRange" request.
//
// @since 3.16.0.
LinkedEditingRange *LinkedEditingRangeClientCapabilities `json:"linkedEditingRange,omitempty"`
// Moniker capabilities specific to the "textDocument/moniker" request.
//
// @since 3.16.0.
Moniker *MonikerClientCapabilities `json:"moniker,omitempty"`
}
// TextDocumentSyncClientCapabilities defines which synchronization capabilities the client supports.
type TextDocumentSyncClientCapabilities struct {
// DynamicRegistration whether text document synchronization supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// WillSave is the client supports sending will save notifications.
WillSave bool `json:"willSave,omitempty"`
// WillSaveWaitUntil is the client supports sending a will save request and
// waits for a response providing text edits which will
// be applied to the document before it is saved.
WillSaveWaitUntil bool `json:"willSaveWaitUntil,omitempty"`
// DidSave is the client supports did save notifications.
DidSave bool `json:"didSave,omitempty"`
}
// CompletionTextDocumentClientCapabilities Capabilities specific to the "textDocument/completion".
type CompletionTextDocumentClientCapabilities struct {
// Whether completion supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// The client supports the following `CompletionItem` specific
// capabilities.
CompletionItem *CompletionTextDocumentClientCapabilitiesItem `json:"completionItem,omitempty"`
CompletionItemKind *CompletionTextDocumentClientCapabilitiesItemKind `json:"completionItemKind,omitempty"`
// ContextSupport is the client supports to send additional context information for a
// `textDocument/completion` request.
ContextSupport bool `json:"contextSupport,omitempty"`
}
// CompletionTextDocumentClientCapabilitiesItem is the client supports the following "CompletionItem" specific
// capabilities.
type CompletionTextDocumentClientCapabilitiesItem struct {
// SnippetSupport client supports snippets as insert text.
//
// A snippet can define tab stops and placeholders with `$1`, `$2`
// and `${3:foo}`. `$0` defines the final tab stop, it defaults to
// the end of the snippet. Placeholders with equal identifiers are linked,
// that is typing in one will update others too.
SnippetSupport bool `json:"snippetSupport,omitempty"`
// CommitCharactersSupport client supports commit characters on a completion item.
CommitCharactersSupport bool `json:"commitCharactersSupport,omitempty"`
// DocumentationFormat client supports the follow content formats for the documentation
// property. The order describes the preferred format of the client.
DocumentationFormat []MarkupKind `json:"documentationFormat,omitempty"`
// DeprecatedSupport client supports the deprecated property on a completion item.
DeprecatedSupport bool `json:"deprecatedSupport,omitempty"`
// PreselectSupport client supports the preselect property on a completion item.
PreselectSupport bool `json:"preselectSupport,omitempty"`
// TagSupport is the client supports the tag property on a completion item.
//
// Clients supporting tags have to handle unknown tags gracefully.
// Clients especially need to preserve unknown tags when sending
// a completion item back to the server in a resolve call.
//
// @since 3.15.0.
TagSupport *CompletionTextDocumentClientCapabilitiesItemTagSupport `json:"tagSupport,omitempty"`
// InsertReplaceSupport client supports insert replace edit to control different behavior if
// a completion item is inserted in the text or should replace text.
//
// @since 3.16.0.
InsertReplaceSupport bool `json:"insertReplaceSupport,omitempty"`
// ResolveSupport indicates which properties a client can resolve lazily on a
// completion item. Before version 3.16.0 only the predefined properties
// `documentation` and `details` could be resolved lazily.
//
// @since 3.16.0.
ResolveSupport *CompletionTextDocumentClientCapabilitiesItemResolveSupport `json:"resolveSupport,omitempty"`
// InsertTextModeSupport is the client supports the `insertTextMode` property on
// a completion item to override the whitespace handling mode
// as defined by the client (see `insertTextMode`).
//
// @since 3.16.0.
InsertTextModeSupport *CompletionTextDocumentClientCapabilitiesItemInsertTextModeSupport `json:"insertTextModeSupport,omitempty"`
}
// CompletionTextDocumentClientCapabilitiesItemTagSupport specific capabilities for the "TagSupport" in the "textDocument/completion" request.
//
// @since 3.15.0.
type CompletionTextDocumentClientCapabilitiesItemTagSupport struct {
// ValueSet is the tags supported by the client.
//
// @since 3.15.0.
ValueSet []CompletionItemTag `json:"valueSet,omitempty"`
}
// CompletionTextDocumentClientCapabilitiesItemResolveSupport specific capabilities for the ResolveSupport in the CompletionTextDocumentClientCapabilitiesItem.
//
// @since 3.16.0.
type CompletionTextDocumentClientCapabilitiesItemResolveSupport struct {
// Properties is the properties that a client can resolve lazily.
Properties []string `json:"properties"`
}
// CompletionTextDocumentClientCapabilitiesItemInsertTextModeSupport specific capabilities for the InsertTextModeSupport in the CompletionTextDocumentClientCapabilitiesItem.
//
// @since 3.16.0.
type CompletionTextDocumentClientCapabilitiesItemInsertTextModeSupport struct {
// ValueSet is the tags supported by the client.
//
// @since 3.16.0.
ValueSet []InsertTextMode `json:"valueSet,omitempty"`
}
// CompletionTextDocumentClientCapabilitiesItemKind specific capabilities for the "CompletionItemKind" in the "textDocument/completion" request.
type CompletionTextDocumentClientCapabilitiesItemKind struct {
// The completion item kind values the client supports. When this
// property exists the client also guarantees that it will
// handle values outside its set gracefully and falls back
// to a default value when unknown.
//
// If this property is not present the client only supports
// the completion items kinds from `Text` to `Reference` as defined in
// the initial version of the protocol.
//
ValueSet []CompletionItemKind `json:"valueSet,omitempty"`
}
// HoverTextDocumentClientCapabilities capabilities specific to the "textDocument/hover".
type HoverTextDocumentClientCapabilities struct {
// DynamicRegistration whether hover supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// ContentFormat is the client supports the follow content formats for the content
// property. The order describes the preferred format of the client.
ContentFormat []MarkupKind `json:"contentFormat,omitempty"`
}
// SignatureHelpTextDocumentClientCapabilities capabilities specific to the "textDocument/signatureHelp".
type SignatureHelpTextDocumentClientCapabilities struct {
// DynamicRegistration whether signature help supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// SignatureInformation is the client supports the following "SignatureInformation"
// specific properties.
SignatureInformation *TextDocumentClientCapabilitiesSignatureInformation `json:"signatureInformation,omitempty"`
// ContextSupport is the client supports to send additional context information for a "textDocument/signatureHelp" request.
//
// A client that opts into contextSupport will also support the "retriggerCharacters" on "SignatureHelpOptions".
//
// @since 3.15.0.
ContextSupport bool `json:"contextSupport,omitempty"`
}
// TextDocumentClientCapabilitiesSignatureInformation is the client supports the following "SignatureInformation"
// specific properties.
type TextDocumentClientCapabilitiesSignatureInformation struct {
// DocumentationFormat is the client supports the follow content formats for the documentation
// property. The order describes the preferred format of the client.
DocumentationFormat []MarkupKind `json:"documentationFormat,omitempty"`
// ParameterInformation is the Client capabilities specific to parameter information.
ParameterInformation *TextDocumentClientCapabilitiesParameterInformation `json:"parameterInformation,omitempty"`
// ActiveParameterSupport is the client supports the `activeParameter` property on
// `SignatureInformation` literal.
//
// @since 3.16.0.
ActiveParameterSupport bool `json:"activeParameterSupport,omitempty"`
}
// TextDocumentClientCapabilitiesParameterInformation is the client capabilities specific to parameter information.
type TextDocumentClientCapabilitiesParameterInformation struct {
// LabelOffsetSupport is the client supports processing label offsets instead of a
// simple label string.
//
// @since 3.14.0.
LabelOffsetSupport bool `json:"labelOffsetSupport,omitempty"`
}
// DeclarationTextDocumentClientCapabilities capabilities specific to the "textDocument/declaration".
type DeclarationTextDocumentClientCapabilities struct {
// DynamicRegistration whether declaration supports dynamic registration. If this is set to `true`
// the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
// return value for the corresponding server capability as well.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// LinkSupport is the client supports additional metadata in the form of declaration links.
//
// @since 3.14.0.
LinkSupport bool `json:"linkSupport,omitempty"`
}
// DefinitionTextDocumentClientCapabilities capabilities specific to the "textDocument/definition".
//
// @since 3.14.0.
type DefinitionTextDocumentClientCapabilities struct {
// DynamicRegistration whether definition supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// LinkSupport is the client supports additional metadata in the form of definition links.
LinkSupport bool `json:"linkSupport,omitempty"`
}
// TypeDefinitionTextDocumentClientCapabilities capabilities specific to the "textDocument/typeDefinition".
//
// @since 3.6.0.
type TypeDefinitionTextDocumentClientCapabilities struct {
// DynamicRegistration whether typeDefinition supports dynamic registration. If this is set to `true`
// the client supports the new "(TextDocumentRegistrationOptions & StaticRegistrationOptions)"
// return value for the corresponding server capability as well.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// LinkSupport is the client supports additional metadata in the form of definition links.
//
// @since 3.14.0
LinkSupport bool `json:"linkSupport,omitempty"`
}
// ImplementationTextDocumentClientCapabilities capabilities specific to the "textDocument/implementation".
//
// @since 3.6.0.
type ImplementationTextDocumentClientCapabilities struct {
// DynamicRegistration whether implementation supports dynamic registration. If this is set to `true`
// the client supports the new "(TextDocumentRegistrationOptions & StaticRegistrationOptions)"
// return value for the corresponding server capability as well.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// LinkSupport is the client supports additional metadata in the form of definition links.
//
// @since 3.14.0
LinkSupport bool `json:"linkSupport,omitempty"`
}
// ReferencesTextDocumentClientCapabilities capabilities specific to the "textDocument/references".
type ReferencesTextDocumentClientCapabilities struct {
// DynamicRegistration whether references supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
// DocumentHighlightClientCapabilities capabilities specific to the "textDocument/documentHighlight".
type DocumentHighlightClientCapabilities struct {
// DynamicRegistration Whether document highlight supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
// DocumentSymbolClientCapabilities capabilities specific to the "textDocument/documentSymbol".
type DocumentSymbolClientCapabilities struct {
// DynamicRegistration whether document symbol supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// SymbolKind specific capabilities for the "SymbolKindCapabilities".
SymbolKind *SymbolKindCapabilities `json:"symbolKind,omitempty"`
// HierarchicalDocumentSymbolSupport is the client support hierarchical document symbols.
HierarchicalDocumentSymbolSupport bool `json:"hierarchicalDocumentSymbolSupport,omitempty"`
// TagSupport is the client supports tags on "SymbolInformation". Tags are supported on
// "DocumentSymbol" if "HierarchicalDocumentSymbolSupport" is set to true.
// Clients supporting tags have to handle unknown tags gracefully.
//
// @since 3.16.0.
TagSupport *DocumentSymbolClientCapabilitiesTagSupport `json:"tagSupport,omitempty"`
// LabelSupport is the client supports an additional label presented in the UI when
// registering a document symbol provider.
//
// @since 3.16.0.
LabelSupport bool `json:"labelSupport,omitempty"`
}
// DocumentSymbolClientCapabilitiesTagSupport TagSupport in the DocumentSymbolClientCapabilities.
//
// @since 3.16.0.
type DocumentSymbolClientCapabilitiesTagSupport struct {
// ValueSet is the tags supported by the client.
ValueSet []SymbolTag `json:"valueSet"`
}
// CodeActionClientCapabilities capabilities specific to the "textDocument/codeAction".
type CodeActionClientCapabilities struct {
// DynamicRegistration whether code action supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// CodeActionLiteralSupport is the client support code action literals as a valid
// response of the "textDocument/codeAction" request.
//
// @since 3.8.0
CodeActionLiteralSupport *CodeActionClientCapabilitiesLiteralSupport `json:"codeActionLiteralSupport,omitempty"`
// IsPreferredSupport whether code action supports the "isPreferred" property.
//
// @since 3.15.0.
IsPreferredSupport bool `json:"isPreferredSupport,omitempty"`
// DisabledSupport whether code action supports the `disabled` property.
//
// @since 3.16.0.
DisabledSupport bool `json:"disabledSupport,omitempty"`
// DataSupport whether code action supports the `data` property which is
// preserved between a `textDocument/codeAction` and a
// `codeAction/resolve` request.
//
// @since 3.16.0.
DataSupport bool `json:"dataSupport,omitempty"`
// ResolveSupport whether the client supports resolving additional code action
// properties via a separate `codeAction/resolve` request.
//
// @since 3.16.0.
ResolveSupport *CodeActionClientCapabilitiesResolveSupport `json:"resolveSupport,omitempty"`
// HonorsChangeAnnotations whether the client honors the change annotations in
// text edits and resource operations returned via the
// `CodeAction#edit` property by for example presenting
// the workspace edit in the user interface and asking
// for confirmation.
//
// @since 3.16.0.
HonorsChangeAnnotations bool `json:"honorsChangeAnnotations,omitempty"`
}
// CodeActionClientCapabilitiesLiteralSupport is the client support code action literals as a valid response of the "textDocument/codeAction" request.
type CodeActionClientCapabilitiesLiteralSupport struct {
// CodeActionKind is the code action kind is support with the following value
// set.
CodeActionKind *CodeActionClientCapabilitiesKind `json:"codeActionKind"`
}
// CodeActionClientCapabilitiesKind is the code action kind is support with the following value set.
type CodeActionClientCapabilitiesKind struct {
// ValueSet is the code action kind values the client supports. When this
// property exists the client also guarantees that it will
// handle values outside its set gracefully and falls back
// to a default value when unknown.
ValueSet []CodeActionKind `json:"valueSet"`
}
// CodeActionClientCapabilitiesResolveSupport ResolveSupport in the CodeActionClientCapabilities.
//
// @since 3.16.0.
type CodeActionClientCapabilitiesResolveSupport struct {
// Properties is the properties that a client can resolve lazily.
Properties []string `json:"properties"`
}
// CodeLensClientCapabilities capabilities specific to the "textDocument/codeLens".
type CodeLensClientCapabilities struct {
// DynamicRegistration Whether code lens supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
// DocumentLinkClientCapabilities capabilities specific to the "textDocument/documentLink".
type DocumentLinkClientCapabilities struct {
// DynamicRegistration whether document link supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// TooltipSupport whether the client supports the "tooltip" property on "DocumentLink".
//
// @since 3.15.0.
TooltipSupport bool `json:"tooltipSupport,omitempty"`
}
// DocumentColorClientCapabilities capabilities specific to the "textDocument/documentColor" and the
// "textDocument/colorPresentation" request.
//
// @since 3.6.0.
type DocumentColorClientCapabilities struct {
// DynamicRegistration whether colorProvider supports dynamic registration. If this is set to `true`
// the client supports the new "(ColorProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions)"
// return value for the corresponding server capability as well.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
// DocumentFormattingClientCapabilities capabilities specific to the "textDocument/formatting".
type DocumentFormattingClientCapabilities struct {
// DynamicRegistration whether code lens supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
// DocumentRangeFormattingClientCapabilities capabilities specific to the "textDocument/rangeFormatting".
type DocumentRangeFormattingClientCapabilities struct {
// DynamicRegistration whether code lens supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
// DocumentOnTypeFormattingClientCapabilities capabilities specific to the "textDocument/onTypeFormatting".
type DocumentOnTypeFormattingClientCapabilities struct {
// DynamicRegistration whether code lens supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
// PublishDiagnosticsClientCapabilities capabilities specific to "textDocument/publishDiagnostics".
type PublishDiagnosticsClientCapabilities struct {
// RelatedInformation whether the clients accepts diagnostics with related information.
RelatedInformation bool `json:"relatedInformation,omitempty"`
// TagSupport clients supporting tags have to handle unknown tags gracefully.
//
// @since 3.15.0.
TagSupport *PublishDiagnosticsClientCapabilitiesTagSupport `json:"tagSupport,omitempty"`
// VersionSupport whether the client interprets the version property of the
// "textDocument/publishDiagnostics" notification`s parameter.
//
// @since 3.15.0.
VersionSupport bool `json:"versionSupport,omitempty"`
// CodeDescriptionSupport client supports a codeDescription property
//
// @since 3.16.0.
CodeDescriptionSupport bool `json:"codeDescriptionSupport,omitempty"`
// DataSupport whether code action supports the `data` property which is
// preserved between a `textDocument/publishDiagnostics` and
// `textDocument/codeAction` request.
//
// @since 3.16.0.
DataSupport bool `json:"dataSupport,omitempty"`
}
// PublishDiagnosticsClientCapabilitiesTagSupport is the client capacity of TagSupport.
//
// @since 3.15.0.
type PublishDiagnosticsClientCapabilitiesTagSupport struct {
// ValueSet is the tags supported by the client.
ValueSet []DiagnosticTag `json:"valueSet"`
}
// RenameClientCapabilities capabilities specific to the "textDocument/rename".
type RenameClientCapabilities struct {
// DynamicRegistration whether rename supports dynamic registration.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// PrepareSupport is the client supports testing for validity of rename operations
// before execution.
PrepareSupport bool `json:"prepareSupport,omitempty"`
// PrepareSupportDefaultBehavior client supports the default behavior result
// (`{ defaultBehavior: boolean }`).
//
// The value indicates the default behavior used by the
// client.
//
// @since 3.16.0.
PrepareSupportDefaultBehavior PrepareSupportDefaultBehavior `json:"prepareSupportDefaultBehavior,omitempty"`
// HonorsChangeAnnotations whether th client honors the change annotations in
// text edits and resource operations returned via the
// rename request's workspace edit by for example presenting
// the workspace edit in the user interface and asking
// for confirmation.
//
// @since 3.16.0.
HonorsChangeAnnotations bool `json:"honorsChangeAnnotations,omitempty"`
}
// PrepareSupportDefaultBehavior default behavior of PrepareSupport.
//
// @since 3.16.0.
type PrepareSupportDefaultBehavior float64
// list of PrepareSupportDefaultBehavior.
const (
// PrepareSupportDefaultBehaviorIdentifier is the client's default behavior is to select the identifier
// according the to language's syntax rule.
PrepareSupportDefaultBehaviorIdentifier PrepareSupportDefaultBehavior = 1
)
// String returns a string representation of the PrepareSupportDefaultBehavior.
func (k PrepareSupportDefaultBehavior) String() string {
switch k {
case PrepareSupportDefaultBehaviorIdentifier:
return "Identifier"
default:
return strconv.FormatFloat(float64(k), 'f', -10, 64)
}
}
// FoldingRangeClientCapabilities capabilities specific to "textDocument/foldingRange" requests.
//
// @since 3.10.0.
type FoldingRangeClientCapabilities struct {
// DynamicRegistration whether implementation supports dynamic registration for folding range providers. If this is set to `true`
// the client supports the new "(FoldingRangeProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions)"
// return value for the corresponding server capability as well.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// RangeLimit is the maximum number of folding ranges that the client prefers to receive per document. The value serves as a
// hint, servers are free to follow the limit.
RangeLimit uint32 `json:"rangeLimit,omitempty"`
// LineFoldingOnly if set, the client signals that it only supports folding complete lines. If set, client will
// ignore specified "startCharacter" and "endCharacter" properties in a FoldingRange.
LineFoldingOnly bool `json:"lineFoldingOnly,omitempty"`
}
// SelectionRangeClientCapabilities capabilities specific to "textDocument/selectionRange" requests.
//
// @since 3.16.0.
type SelectionRangeClientCapabilities struct {
// DynamicRegistration whether implementation supports dynamic registration for selection range providers. If this is set to `true`
// the client supports the new "(SelectionRangeProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions)"
// return value for the corresponding server capability as well.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
// CallHierarchyClientCapabilities capabilities specific to "textDocument/callHierarchy" requests.
//
// @since 3.16.0.
type CallHierarchyClientCapabilities struct {
// DynamicRegistration whether implementation supports dynamic registration. If this is set to
// `true` the client supports the new `(TextDocumentRegistrationOptions &
// StaticRegistrationOptions)` return value for the corresponding server
// capability as well.}
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
// SemanticTokensClientCapabilities capabilities specific to the "textDocument.semanticTokens" request.
//
// @since 3.16.0.
type SemanticTokensClientCapabilities struct {
// DynamicRegistration whether implementation supports dynamic registration. If this is set to
// `true` the client supports the new `(TextDocumentRegistrationOptions &
// StaticRegistrationOptions)` return value for the corresponding server
// capability as well.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
// Requests which requests the client supports and might send to the server
// depending on the server's capability. Please note that clients might not
// show semantic tokens or degrade some of the user experience if a range
// or full request is advertised by the client but not provided by the
// server. If for example the client capability `requests.full` and
// `request.range` are both set to true but the server only provides a
// range provider the client might not render a minimap correctly or might
// even decide to not show any semantic tokens at all.
Requests SemanticTokensWorkspaceClientCapabilitiesRequests `json:"requests"`
// TokenTypes is the token types that the client supports.
TokenTypes []string `json:"tokenTypes"`
// TokenModifiers is the token modifiers that the client supports.
TokenModifiers []string `json:"tokenModifiers"`
// Formats is the formats the clients supports.
Formats []TokenFormat `json:"formats"`
// OverlappingTokenSupport whether the client supports tokens that can overlap each other.
OverlappingTokenSupport bool `json:"overlappingTokenSupport,omitempty"`
// MultilineTokenSupport whether the client supports tokens that can span multiple lines.
MultilineTokenSupport bool `json:"multilineTokenSupport,omitempty"`
}
// SemanticTokensWorkspaceClientCapabilitiesRequests capabilities specific to the "textDocument/semanticTokens/xxx" request.
//
// @since 3.16.0.
type SemanticTokensWorkspaceClientCapabilitiesRequests struct {
// Range is the client will send the "textDocument/semanticTokens/range" request
// if the server provides a corresponding handler.
Range bool `json:"range,omitempty"`
// Full is the client will send the "textDocument/semanticTokens/full" request
// if the server provides a corresponding handler. The client will send the
// `textDocument/semanticTokens/full/delta` request if the server provides a
// corresponding handler.
Full interface{} `json:"full,omitempty"`
}
// LinkedEditingRangeClientCapabilities capabilities specific to "textDocument/linkedEditingRange" requests.
//
// @since 3.16.0.
type LinkedEditingRangeClientCapabilities struct {
// DynamicRegistration whether implementation supports dynamic registration.
// If this is set to `true` the client supports the new
// `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
// return value for the corresponding server capability as well.
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
// MonikerClientCapabilities capabilities specific to the "textDocument/moniker" request.
//
// @since 3.16.0.
type MonikerClientCapabilities struct {
// DynamicRegistration whether implementation supports dynamic registration. If this is set to
// `true` the client supports the new `(TextDocumentRegistrationOptions &
// StaticRegistrationOptions)` return value for the corresponding server
// capability as well.// DynamicRegistration whether implementation supports dynamic registration. If this is set to
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
// WindowClientCapabilities represents a WindowClientCapabilities specific client capabilities.
//
// @since 3.15.0.
type WindowClientCapabilities struct {
// WorkDoneProgress whether client supports handling progress notifications. If set servers are allowed to
// report in "workDoneProgress" property in the request specific server capabilities.
//
// @since 3.15.0.
WorkDoneProgress bool `json:"workDoneProgress,omitempty"`
// ShowMessage capabilities specific to the showMessage request.
//
// @since 3.16.0.
ShowMessage *ShowMessageRequestClientCapabilities `json:"showMessage,omitempty"`
// ShowDocument client capabilities for the show document request.
//
// @since 3.16.0.
ShowDocument *ShowDocumentClientCapabilities `json:"showDocument,omitempty"`
}
// ShowMessageRequestClientCapabilities show message request client capabilities.
//
// @since 3.16.0.
type ShowMessageRequestClientCapabilities struct {
// MessageActionItem capabilities specific to the "MessageActionItem" type.
MessageActionItem *ShowMessageRequestClientCapabilitiesMessageActionItem `json:"messageActionItem,omitempty"`
}
// ShowMessageRequestClientCapabilitiesMessageActionItem capabilities specific to the "MessageActionItem" type.
//
// @since 3.16.0.
type ShowMessageRequestClientCapabilitiesMessageActionItem struct {
// AdditionalPropertiesSupport whether the client supports additional attributes which
// are preserved and sent back to the server in the
// request's response.
AdditionalPropertiesSupport bool `json:"additionalPropertiesSupport,omitempty"`
}
// ShowDocumentClientCapabilities client capabilities for the show document request.
//
// @since 3.16.0.
type ShowDocumentClientCapabilities struct {
// Support is the client has support for the show document
// request.
Support bool `json:"support"`
}
// GeneralClientCapabilities represents a General specific client capabilities.
//
// @since 3.16.0.
type GeneralClientCapabilities struct {
// RegularExpressions is the client capabilities specific to regular expressions.
//
// @since 3.16.0.
RegularExpressions *RegularExpressionsClientCapabilities `json:"regularExpressions,omitempty"`
// Markdown client capabilities specific to the client's markdown parser.
//
// @since 3.16.0.
Markdown *MarkdownClientCapabilities `json:"markdown,omitempty"`
}
// RegularExpressionsClientCapabilities represents a client capabilities specific to regular expressions.
//
// The following features from the ECMAScript 2020 regular expression specification are NOT mandatory for a client:
//
// Assertions
// Lookahead assertion, Negative lookahead assertion, lookbehind assertion, negative lookbehind assertion.
// Character classes
// Matching control characters using caret notation (e.g. "\cX") and matching UTF-16 code units (e.g. "\uhhhh").
// Group and ranges
// Named capturing groups.
// Unicode property escapes
// None of the features needs to be supported.
//
// The only regular expression flag that a client needs to support is "i" to specify a case insensitive search.
//
// @since 3.16.0.
type RegularExpressionsClientCapabilities struct {
// Engine is the engine's name.
//
// Well known engine name is "ECMAScript".
// https://tc39.es/ecma262/#sec-regexp-regular-expression-objects
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
Engine string `json:"engine"`
// Version is the engine's version.
//
// Well known engine version is "ES2020".
// https://tc39.es/ecma262/#sec-regexp-regular-expression-objects
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
Version string `json:"version,omitempty"`
}
// MarkdownClientCapabilities represents a client capabilities specific to the used markdown parser.
//
// @since 3.16.0.
type MarkdownClientCapabilities struct {
// Parser is the name of the parser.
Parser string `json:"parser"`
// version is the version of the parser.
Version string `json:"version,omitempty"`
}