| // Copyright 2018 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // This file contains the corresponding structures to the |
| // "General" messages part of the LSP specification. |
| |
| package protocol |
| |
| import "golang.org/x/tools/internal/jsonrpc2" |
| |
| type CancelParams struct { |
| /** |
| * The request id to cancel. |
| */ |
| ID jsonrpc2.ID `json:"id"` |
| } |
| |
| type InitializeParams struct { |
| /** |
| * The process Id of the parent process that started |
| * the server. Is null if the process has not been started by another process. |
| * If the parent process is not alive then the server should exit (see exit notification) its process. |
| */ |
| ProcessID *float64 `json:"processId"` |
| |
| /** |
| * The rootPath of the workspace. Is null |
| * if no folder is open. |
| * |
| * @deprecated in favour of rootURI. |
| */ |
| RootPath *string `json:"rootPath"` |
| |
| /** |
| * The rootURI of the workspace. Is null if no |
| * folder is open. If both `rootPath` and `rootURI` are set |
| * `rootURI` wins. |
| */ |
| RootURI *DocumentURI `json:"rootURI"` |
| |
| /** |
| * User provided initialization options. |
| */ |
| InitializationOptions interface{} `json:"initializationOptions"` |
| |
| /** |
| * The capabilities provided by the client (editor or tool) |
| */ |
| Capabilities ClientCapabilities `json:"capabilities"` |
| |
| /** |
| * The initial trace setting. If omitted trace is disabled ('off'). |
| */ |
| Trace string `json:"trace"` // 'off' | 'messages' | 'verbose' |
| |
| /** |
| * The workspace folders configured in the client when the server starts. |
| * This property is only available if the client supports workspace folders. |
| * It can be `null` if the client supports workspace folders but none are |
| * configured. |
| * |
| * Since 3.6.0 |
| */ |
| WorkspaceFolders []WorkspaceFolder `json:"workspaceFolders,omitempty"` |
| } |
| |
| /** |
| * 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"` |
| |
| /** |
| * Capabilities specific to `WorkspaceEdit`s |
| */ |
| WorkspaceEdit struct { |
| /** |
| * The client supports versioned document changes in `WorkspaceEdit`s |
| */ |
| DocumentChanges bool `json:"documentChanges,omitempty"` |
| } `json:"workspaceEdit,omitempty"` |
| |
| /** |
| * Capabilities specific to the `workspace/didChangeConfiguration` notification. |
| */ |
| DidChangeConfiguration struct { |
| /** |
| * Did change configuration notification supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| } `json:"didChangeConfiguration,omitempty"` |
| |
| /** |
| * Capabilities specific to the `workspace/didChangeWatchedFiles` notification. |
| */ |
| DidChangeWatchedFiles struct { |
| /** |
| * Did change watched files notification supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| } `json:"didChangeWatchedFiles,omitempty"` |
| |
| /** |
| * Capabilities specific to the `workspace/symbol` request. |
| */ |
| Symbol struct { |
| /** |
| * Symbol request supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| |
| /** |
| * Specific capabilities for the `SymbolKind` in the `workspace/symbol` request. |
| */ |
| SymbolKind struct { |
| /** |
| * 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"` |
| } `json:"symbolKind,omitempty"` |
| } `json:"symbol,omitempty"` |
| |
| /** |
| * Capabilities specific to the `workspace/executeCommand` request. |
| */ |
| ExecuteCommand struct { |
| /** |
| * Execute command supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| } `json:"executeCommand,omitempty"` |
| |
| /** |
| * The client has support for workspace folders. |
| * |
| * Since 3.6.0 |
| */ |
| WorkspaceFolders bool `json:"workspaceFolders,omitempty"` |
| |
| /** |
| * The client supports `workspace/configuration` requests. |
| * |
| * Since 3.6.0 |
| */ |
| Configuration bool `json:"configuration,omitempty"` |
| } |
| |
| /** |
| * Text document specific client capabilities. |
| */ |
| type TextDocumentClientCapabilities struct { |
| Synchronization struct { |
| /** |
| * Whether text document synchronization supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| |
| /** |
| * The client supports sending will save notifications. |
| */ |
| WillSave bool `json:"willSave,omitempty"` |
| |
| /** |
| * 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"` |
| |
| /** |
| * The client supports did save notifications. |
| */ |
| DidSave bool `json:"didSave,omitempty"` |
| } `json:"synchronization,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/completion` |
| */ |
| Completion struct { |
| /** |
| * Whether completion supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| |
| /** |
| * The client supports the following `CompletionItem` specific |
| * capabilities. |
| */ |
| CompletionItem struct { |
| /** |
| * 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"` |
| |
| /** |
| * Client supports commit characters on a completion item. |
| */ |
| CommitCharactersSupport bool `json:"commitCharactersSupport,omitempty"` |
| |
| /** |
| * Client supports the follow content formats for the documentation |
| * property. The order describes the preferred format of the client. |
| */ |
| DocumentationFormat []MarkupKind `json:"documentationFormat,omitempty"` |
| |
| /** |
| * Client supports the deprecated property on a completion item. |
| */ |
| DeprecatedSupport bool `json:"deprecatedSupport,omitempty"` |
| |
| /** |
| * Client supports the preselect property on a completion item. |
| */ |
| PreselectSupport bool `json:"preselectSupport,omitempty"` |
| } `json:"completionItem,omitempty"` |
| |
| CompletionItemKind 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"` |
| } `json:"completionItemKind,omitempty"` |
| |
| /** |
| * The client supports to send additional context information for a |
| * `textDocument/completion` request. |
| */ |
| ContextSupport bool `json:"contextSupport,omitempty"` |
| } `json:"completion"` |
| |
| /** |
| * Capabilities specific to the `textDocument/hover` |
| */ |
| Hover struct { |
| /** |
| * Whether hover supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| |
| /** |
| * Client supports the follow content formats for the content |
| * property. The order describes the preferred format of the client. |
| */ |
| ContentFormat []MarkupKind `json:"contentFormat,omitempty"` |
| } `json:"hover,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/signatureHelp` |
| */ |
| SignatureHelp struct { |
| /** |
| * Whether signature help supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| |
| /** |
| * The client supports the following `SignatureInformation` |
| * specific properties. |
| */ |
| SignatureInformation struct { |
| /** |
| * Client supports the follow content formats for the documentation |
| * property. The order describes the preferred format of the client. |
| */ |
| DocumentationFormat []MarkupKind `json:"documentationFormat,omitempty"` |
| } `json:"signatureInformation,omitempty"` |
| } `json:"signatureHelp,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/references` |
| */ |
| References struct { |
| /** |
| * Whether references supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| } `json:"references,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/documentHighlight` |
| */ |
| DocumentHighlight struct { |
| /** |
| * Whether document highlight supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| } `json:"documentHighlight,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/documentSymbol` |
| */ |
| DocumentSymbol struct { |
| /** |
| * Whether document symbol supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| |
| /** |
| * Specific capabilities for the `SymbolKind`. |
| */ |
| SymbolKind struct { |
| /** |
| * 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"` |
| } `json:"symbolKind,omitempty"` |
| |
| /** |
| * The client support hierarchical document symbols. |
| */ |
| HierarchicalDocumentSymbolSupport bool `json:"hierarchicalDocumentSymbolSupport,omitempty"` |
| } `json:"documentSymbol,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/formatting` |
| */ |
| Formatting struct { |
| /** |
| * Whether formatting supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| } `json:"formatting,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/rangeFormatting` |
| */ |
| RangeFormatting struct { |
| /** |
| * Whether range formatting supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| } `json:"rangeFormatting,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/onTypeFormatting` |
| */ |
| OnTypeFormatting struct { |
| /** |
| * Whether on type formatting supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| } `json:"onTypeFormatting,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/definition` |
| */ |
| Definition struct { |
| /** |
| * Whether definition supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| } `json:"definition,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/typeDefinition` |
| * |
| * Since 3.6.0 |
| */ |
| TypeDefinition struct { |
| /** |
| * 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"` |
| } `json:"typeDefinition,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/implementation`. |
| * |
| * Since 3.6.0 |
| */ |
| Implementation struct { |
| /** |
| * 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"` |
| } `json:"implementation,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/codeAction` |
| */ |
| CodeAction struct { |
| /** |
| * Whether code action supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| /** |
| * The client support code action literals as a valid |
| * response of the `textDocument/codeAction` request. |
| * |
| * Since 3.8.0 |
| */ |
| CodeActionLiteralSupport struct { |
| /** |
| * The code action kind is support with the following value |
| * set. |
| */ |
| CodeActionKind struct { |
| |
| /** |
| * 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"` |
| } `json:"codeActionKind"` |
| } `json:"codeActionLiteralSupport,omitempty"` |
| } `json:"codeAction,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/codeLens` |
| */ |
| CodeLens struct { |
| /** |
| * Whether code lens supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| } `json:"codeLens,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/documentLink` |
| */ |
| DocumentLink struct { |
| /** |
| * Whether document link supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| } `json:"documentLink,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/documentColor` and the |
| * `textDocument/colorPresentation` request. |
| * |
| * Since 3.6.0 |
| */ |
| ColorProvider struct { |
| /** |
| * 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"` |
| } `json:"colorProvider,omitempty"` |
| |
| /** |
| * Capabilities specific to the `textDocument/rename` |
| */ |
| Rename struct { |
| /** |
| * Whether rename supports dynamic registration. |
| */ |
| DynamicRegistration bool `json:"dynamicRegistration,omitempty"` |
| } `json:"rename,omitempty"` |
| |
| /** |
| * Capabilities specific to `textDocument/publishDiagnostics`. |
| */ |
| PublishDiagnostics struct { |
| /** |
| * Whether the clients accepts diagnostics with related information. |
| */ |
| RelatedInformation bool `json:"relatedInformation,omitempty"` |
| } `json:"publishDiagnostics,omitempty"` |
| |
| /** |
| * Capabilities specific to `textDocument/foldingRange` requests. |
| * |
| * Since 3.10.0 |
| */ |
| FoldingRange struct { |
| /** |
| * 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"` |
| /** |
| * 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 float64 `json:"rangeLimit,omitempty"` |
| /** |
| * 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"` |
| } |
| } |
| |
| // 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 property is missing that |
| // defines sub properties all sub properties should be interpreted as an absence |
| // of the capability. |
| // |
| // Client capabilities got introduced with version 3.0 of the protocol. They |
| // therefore only describe capabilities that got introduced in 3.x or later. |
| // Capabilities that existed in the 2.x version of the protocol are still |
| // mandatory for clients. Clients cannot opt out of providing them. So even if a |
| // client omits the ClientCapabilities.textDocument.synchronization it is still |
| // required that the client provides text document synchronization (e.g. open, |
| // changed and close notifications). |
| type ClientCapabilities struct { |
| /** |
| * Workspace specific client capabilities. |
| */ |
| Workspace WorkspaceClientCapabilities `json:"workspace,omitempty"` |
| |
| /** |
| * Text document specific client capabilities. |
| */ |
| TextDocument TextDocumentClientCapabilities `json:"textDocument,omitempty"` |
| |
| /** |
| * Experimental client capabilities. |
| */ |
| Experimental interface{} `json:"experimental,omitempty"` |
| } |
| |
| type InitializeResult struct { |
| /** |
| * The capabilities the language server provides. |
| */ |
| Capabilities ServerCapabilities `json:"capabilities"` |
| } |
| |
| /** |
| * Defines how the host (editor) should sync document changes to the language server. |
| */ |
| type TextDocumentSyncKind float64 |
| |
| const ( |
| /** |
| * Documents should not be synced at all. |
| */ |
| None TextDocumentSyncKind = 0 |
| |
| /** |
| * Documents are synced by always sending the full content |
| * of the document. |
| */ |
| Full TextDocumentSyncKind = 1 |
| |
| /** |
| * Documents are synced by sending the full content on open. |
| * After that only incremental updates to the document are |
| * send. |
| */ |
| Incremental TextDocumentSyncKind = 2 |
| ) |
| |
| /** |
| * Completion options. |
| */ |
| type CompletionOptions struct { |
| /** |
| * The server provides support to resolve additional |
| * information for a completion item. |
| */ |
| ResolveProvider bool `json:"resolveProvider,omitempty"` |
| |
| /** |
| * The characters that trigger completion automatically. |
| */ |
| TriggerCharacters []string `json:"triggerCharacters,omitempty"` |
| } |
| |
| /** |
| * Signature help options. |
| */ |
| type SignatureHelpOptions struct { |
| /** |
| * The characters that trigger signature help |
| * automatically. |
| */ |
| TriggerCharacters []string `json:"triggerCharacters,omitempty"` |
| } |
| |
| /** |
| * Code Lens options. |
| */ |
| type CodeLensOptions struct { |
| /** |
| * Code lens has a resolve provider as well. |
| */ |
| ResolveProvider bool `json:"resolveProvider,omitempty"` |
| } |
| |
| /** |
| * Format document on type options. |
| */ |
| type DocumentOnTypeFormattingOptions struct { |
| /** |
| * A character on which formatting should be triggered, like `}`. |
| */ |
| FirstTriggerCharacter string `json:"firstTriggerCharacter"` |
| |
| /** |
| * More trigger characters. |
| */ |
| MoreTriggerCharacter []string `json:"moreTriggerCharacter,omitempty"` |
| } |
| |
| /** |
| * Document link options. |
| */ |
| type DocumentLinkOptions struct { |
| /** |
| * Document links have a resolve provider as well. |
| */ |
| ResolveProvider bool `json:"resolveProvider,omitempty"` |
| } |
| |
| /** |
| * Execute command options. |
| */ |
| type ExecuteCommandOptions struct { |
| /** |
| * The commands to be executed on the server |
| */ |
| Commands []string `json:"commands"` |
| } |
| |
| /** |
| * Save options. |
| */ |
| type SaveOptions struct { |
| /** |
| * The client is supposed to include the content on save. |
| */ |
| IncludeText bool `json:"includeText,omitempty"` |
| } |
| |
| /** |
| * Color provider options. |
| */ |
| type ColorProviderOptions struct { |
| } |
| |
| /** |
| * Folding range provider options. |
| */ |
| type FoldingRangeProviderOptions struct { |
| } |
| |
| type TextDocumentSyncOptions struct { |
| /** |
| * Open and close notifications are sent to the server. |
| */ |
| OpenClose bool `json:"openClose,omitempty"` |
| /** |
| * Change notifications are sent to the server. See TextDocumentSyncKind.None, TextDocumentSyncKind.Full |
| * and TextDocumentSyncKind.Incremental. If omitted it defaults to TextDocumentSyncKind.None. |
| */ |
| Change float64 `json:"change,omitempty"` |
| /** |
| * Will save notifications are sent to the server. |
| */ |
| WillSave bool `json:"willSave,omitempty"` |
| /** |
| * Will save wait until requests are sent to the server. |
| */ |
| WillSaveWaitUntil bool `json:"willSaveWaitUntil,omitempty"` |
| /** |
| * Save notifications are sent to the server. |
| */ |
| Save SaveOptions `json:"save,omitempty"` |
| } |
| |
| /** |
| * Static registration options to be returned in the initialize request. |
| */ |
| type StaticRegistrationOptions struct { |
| /** |
| * The id used to register the request. The id can be used to deregister |
| * the request again. See also Registration#id. |
| */ |
| ID string `json:"id,omitempty"` |
| } |
| |
| type ServerCapabilities struct { |
| /** |
| * Defines how text documents are synced. Is either a detailed structure defining each notification or |
| * for backwards compatibility the TextDocumentSyncKind number. If omitted it defaults to `TextDocumentSyncKind.None`. |
| */ |
| TextDocumentSync interface{} `json:"textDocumentSync,omitempty"` // TextDocumentSyncOptions | number |
| /** |
| * The server provides hover support. |
| */ |
| HoverProvider bool `json:"hoverProvider,omitempty"` |
| /** |
| * The server provides completion support. |
| */ |
| CompletionProvider CompletionOptions `json:"completionProvider,omitempty"` |
| /** |
| * The server provides signature help support. |
| */ |
| SignatureHelpProvider SignatureHelpOptions `json:"signatureHelpProvider,omitempty"` |
| /** |
| * The server provides goto definition support. |
| */ |
| DefinitionProvider bool `json:"definitionProvider,omitempty"` |
| /** |
| * The server provides Goto Type Definition support. |
| * |
| * Since 3.6.0 |
| */ |
| TypeDefinitionProvider interface{} `json:"typeDefinitionProvider,omitempty"` // boolean | (TextDocumentRegistrationOptions & StaticRegistrationOptions) |
| /** |
| * The server provides Goto Implementation support. |
| * |
| * Since 3.6.0 |
| */ |
| ImplementationProvider interface{} `json:"implementationProvider,omitempty"` // boolean | (TextDocumentRegistrationOptions & StaticRegistrationOptions) |
| /** |
| * The server provides find references support. |
| */ |
| ReferencesProvider bool `json:"referencesProvider,omitempty"` |
| /** |
| * The server provides document highlight support. |
| */ |
| DocumentHighlightProvider bool `json:"documentHighlightProvider,omitempty"` |
| /** |
| * The server provides document symbol support. |
| */ |
| DocumentSymbolProvider bool `json:"documentSymbolProvider,omitempty"` |
| /** |
| * The server provides workspace symbol support. |
| */ |
| WorkspaceSymbolProvider bool `json:"workspaceSymbolProvider,omitempty"` |
| /** |
| * The server provides code actions. |
| */ |
| CodeActionProvider bool `json:"codeActionProvider,omitempty"` |
| /** |
| * The server provides code lens. |
| */ |
| CodeLensProvider CodeLensOptions `json:"codeLensProvider,omitempty"` |
| /** |
| * The server provides document formatting. |
| */ |
| DocumentFormattingProvider bool `json:"documentFormattingProvider,omitempty"` |
| /** |
| * The server provides document range formatting. |
| */ |
| DocumentRangeFormattingProvider bool `json:"documentRangeFormattingProvider,omitempty"` |
| /** |
| * The server provides document formatting on typing. |
| */ |
| DocumentOnTypeFormattingProvider DocumentOnTypeFormattingOptions `json:"documentOnTypeFormattingProvider,omitempty"` |
| /** |
| * The server provides rename support. |
| */ |
| RenameProvider bool `json:"renameProvider,omitempty"` |
| /** |
| * The server provides document link support. |
| */ |
| DocumentLinkProvider DocumentLinkOptions `json:"documentLinkProvider,omitempty"` |
| /** |
| * The server provides color provider support. |
| * |
| * Since 3.6.0 |
| */ |
| //TODO: complex union type to decode here |
| ColorProvider interface{} `json:"colorProvider,omitempty"` // boolean | ColorProviderOptions | (ColorProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions) |
| /** |
| * The server provides folding provider support. |
| * |
| * Since 3.10.0 |
| */ |
| //TODO: complex union type to decode here |
| FoldingRangeProvider interface{} `json:"foldingRangeProvider,omitempty"` // boolean | FoldingRangeProviderOptions | (FoldingRangeProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions) |
| /** |
| * The server provides execute command support. |
| */ |
| ExecuteCommandProvider ExecuteCommandOptions `json:"executeCommandProvider,omitempty"` |
| /** |
| * Workspace specific server capabilities |
| */ |
| Workspace struct { |
| /** |
| * The server supports workspace folder. |
| * |
| * Since 3.6.0 |
| */ |
| WorkspaceFolders struct { |
| /** |
| * The server has support for workspace folders |
| */ |
| Supported bool `json:"supported,omitempty"` |
| /** |
| * Whether the server wants to receive workspace folder |
| * change notifications. |
| * |
| * If a strings is provided the string is treated as a ID |
| * under which the notification is registered on the client |
| * side. The ID can be used to unregister for these events |
| * using the `client/unregisterCapability` request. |
| */ |
| ChangeNotifications interface{} `json:"changeNotifications,omitempty"` // string | boolean |
| } `json:"workspaceFolders,omitempty"` |
| } `json:"workspace,omitempty"` |
| /** |
| * Experimental server capabilities. |
| */ |
| Experimental interface{} `json:"experimental,omitempty"` |
| } |
| |
| type InitializedParams struct { |
| } |