mirror of
https://github.com/golang/go
synced 2024-11-18 14:44:41 -07:00
ff3f684ce0
This is not intended to be a user friendly package, just the rawest correct implemenation of the protocol as a building block Change-Id: Ib672b7f1e2fd8284be422dc7964f1876e94c9578 Reviewed-on: https://go-review.googlesource.com/136676 Reviewed-by: Alan Donovan <adonovan@google.com> Reviewed-by: Rebecca Stambler <rstambler@golang.org>
850 lines
25 KiB
Go
850 lines
25 KiB
Go
// 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 {
|
|
}
|