mirror of
https://github.com/golang/go
synced 2024-11-19 01:04:40 -07:00
434f7a8fef
The previous implementation was exposing the details of the wire format and resulted in non idomatic go, detecting the presence of absence of values in fields to deterimine the message type. Now the messages are distinct types and we use type switches instead. Request still exists as an interface to expose the shared behaviour of Call and Notification, as this is the type accepted by handlers. The set of messages is deliberately closed by using a private methods on the interfaces. Change-Id: I2cf15ee3923ef4688670c62896f81f760c77fe04 Reviewed-on: https://go-review.googlesource.com/c/tools/+/228719 Run-TryBot: Ian Cottrell <iancottrell@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
774 lines
32 KiB
Go
774 lines
32 KiB
Go
package protocol
|
|
|
|
// Package protocol contains data types and code for LSP jsonrpcs
|
|
// generated automatically from vscode-languageserver-node
|
|
// commit: 151b520c995ee3d76729b5c46258ab273d989726
|
|
// last fetched Mon Mar 30 2020 21:01:17 GMT-0400 (Eastern Daylight Time)
|
|
|
|
// Code generated (see typescript/README.md) DO NOT EDIT.
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"golang.org/x/tools/internal/jsonrpc2"
|
|
"golang.org/x/tools/internal/xcontext"
|
|
)
|
|
|
|
type Server interface {
|
|
DidChangeWorkspaceFolders(context.Context, *DidChangeWorkspaceFoldersParams) error
|
|
WorkDoneProgressCancel(context.Context, *WorkDoneProgressCancelParams) error
|
|
Initialized(context.Context, *InitializedParams) error
|
|
Exit(context.Context) error
|
|
DidChangeConfiguration(context.Context, *DidChangeConfigurationParams) error
|
|
DidOpen(context.Context, *DidOpenTextDocumentParams) error
|
|
DidChange(context.Context, *DidChangeTextDocumentParams) error
|
|
DidClose(context.Context, *DidCloseTextDocumentParams) error
|
|
DidSave(context.Context, *DidSaveTextDocumentParams) error
|
|
WillSave(context.Context, *WillSaveTextDocumentParams) error
|
|
DidChangeWatchedFiles(context.Context, *DidChangeWatchedFilesParams) error
|
|
SetTraceNotification(context.Context, *SetTraceParams) error
|
|
LogTraceNotification(context.Context, *LogTraceParams) error
|
|
Implementation(context.Context, *ImplementationParams) (Definition /*Definition | DefinitionLink[] | null*/, error)
|
|
TypeDefinition(context.Context, *TypeDefinitionParams) (Definition /*Definition | DefinitionLink[] | null*/, error)
|
|
DocumentColor(context.Context, *DocumentColorParams) ([]ColorInformation, error)
|
|
ColorPresentation(context.Context, *ColorPresentationParams) ([]ColorPresentation, error)
|
|
FoldingRange(context.Context, *FoldingRangeParams) ([]FoldingRange /*FoldingRange[] | null*/, error)
|
|
Declaration(context.Context, *DeclarationParams) (Declaration /*Declaration | DeclarationLink[] | null*/, error)
|
|
SelectionRange(context.Context, *SelectionRangeParams) ([]SelectionRange /*SelectionRange[] | null*/, error)
|
|
Initialize(context.Context, *ParamInitialize) (*InitializeResult, error)
|
|
Shutdown(context.Context) error
|
|
WillSaveWaitUntil(context.Context, *WillSaveTextDocumentParams) ([]TextEdit /*TextEdit[] | null*/, error)
|
|
Completion(context.Context, *CompletionParams) (*CompletionList /*CompletionItem[] | CompletionList | null*/, error)
|
|
Resolve(context.Context, *CompletionItem) (*CompletionItem, error)
|
|
Hover(context.Context, *HoverParams) (*Hover /*Hover | null*/, error)
|
|
SignatureHelp(context.Context, *SignatureHelpParams) (*SignatureHelp /*SignatureHelp | null*/, error)
|
|
Definition(context.Context, *DefinitionParams) (Definition /*Definition | DefinitionLink[] | null*/, error)
|
|
References(context.Context, *ReferenceParams) ([]Location /*Location[] | null*/, error)
|
|
DocumentHighlight(context.Context, *DocumentHighlightParams) ([]DocumentHighlight /*DocumentHighlight[] | null*/, error)
|
|
DocumentSymbol(context.Context, *DocumentSymbolParams) ([]interface{} /*SymbolInformation[] | DocumentSymbol[] | null*/, error)
|
|
CodeAction(context.Context, *CodeActionParams) ([]CodeAction /*(Command | CodeAction)[] | null*/, error)
|
|
Symbol(context.Context, *WorkspaceSymbolParams) ([]SymbolInformation /*SymbolInformation[] | null*/, error)
|
|
CodeLens(context.Context, *CodeLensParams) ([]CodeLens /*CodeLens[] | null*/, error)
|
|
ResolveCodeLens(context.Context, *CodeLens) (*CodeLens, error)
|
|
DocumentLink(context.Context, *DocumentLinkParams) ([]DocumentLink /*DocumentLink[] | null*/, error)
|
|
ResolveDocumentLink(context.Context, *DocumentLink) (*DocumentLink, error)
|
|
Formatting(context.Context, *DocumentFormattingParams) ([]TextEdit /*TextEdit[] | null*/, error)
|
|
RangeFormatting(context.Context, *DocumentRangeFormattingParams) ([]TextEdit /*TextEdit[] | null*/, error)
|
|
OnTypeFormatting(context.Context, *DocumentOnTypeFormattingParams) ([]TextEdit /*TextEdit[] | null*/, error)
|
|
Rename(context.Context, *RenameParams) (*WorkspaceEdit /*WorkspaceEdit | null*/, error)
|
|
PrepareRename(context.Context, *PrepareRenameParams) (*Range /*Range | { range: Range, placeholder: string } | null*/, error)
|
|
ExecuteCommand(context.Context, *ExecuteCommandParams) (interface{} /*any | null*/, error)
|
|
PrepareCallHierarchy(context.Context, *CallHierarchyPrepareParams) ([]CallHierarchyItem /*CallHierarchyItem[] | null*/, error)
|
|
IncomingCalls(context.Context, *CallHierarchyIncomingCallsParams) ([]CallHierarchyIncomingCall /*CallHierarchyIncomingCall[] | null*/, error)
|
|
OutgoingCalls(context.Context, *CallHierarchyOutgoingCallsParams) ([]CallHierarchyOutgoingCall /*CallHierarchyOutgoingCall[] | null*/, error)
|
|
SemanticTokens(context.Context, *SemanticTokensParams) (*SemanticTokens /*SemanticTokens | null*/, error)
|
|
SemanticTokensEdits(context.Context, *SemanticTokensEditsParams) (interface{} /* SemanticTokens | SemanticTokensEdits | nil*/, error)
|
|
SemanticTokensRange(context.Context, *SemanticTokensRangeParams) (*SemanticTokens /*SemanticTokens | null*/, error)
|
|
NonstandardRequest(ctx context.Context, method string, params interface{}) (interface{}, error)
|
|
}
|
|
|
|
func ServerHandler(server Server, handler jsonrpc2.Handler) jsonrpc2.Handler {
|
|
return func(ctx context.Context, reply jsonrpc2.Replier, r jsonrpc2.Request) error {
|
|
if ctx.Err() != nil {
|
|
ctx := xcontext.Detach(ctx)
|
|
return reply(ctx, nil, RequestCancelledError)
|
|
}
|
|
switch r.Method() {
|
|
case "workspace/didChangeWorkspaceFolders": // notif
|
|
var params DidChangeWorkspaceFoldersParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
err := server.DidChangeWorkspaceFolders(ctx, ¶ms)
|
|
return reply(ctx, nil, err)
|
|
case "window/workDoneProgress/cancel": // notif
|
|
var params WorkDoneProgressCancelParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
err := server.WorkDoneProgressCancel(ctx, ¶ms)
|
|
return reply(ctx, nil, err)
|
|
case "initialized": // notif
|
|
var params InitializedParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
err := server.Initialized(ctx, ¶ms)
|
|
return reply(ctx, nil, err)
|
|
case "exit": // notif
|
|
return server.Exit(ctx)
|
|
case "workspace/didChangeConfiguration": // notif
|
|
var params DidChangeConfigurationParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
err := server.DidChangeConfiguration(ctx, ¶ms)
|
|
return reply(ctx, nil, err)
|
|
case "textDocument/didOpen": // notif
|
|
var params DidOpenTextDocumentParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
err := server.DidOpen(ctx, ¶ms)
|
|
return reply(ctx, nil, err)
|
|
case "textDocument/didChange": // notif
|
|
var params DidChangeTextDocumentParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
err := server.DidChange(ctx, ¶ms)
|
|
return reply(ctx, nil, err)
|
|
case "textDocument/didClose": // notif
|
|
var params DidCloseTextDocumentParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
err := server.DidClose(ctx, ¶ms)
|
|
return reply(ctx, nil, err)
|
|
case "textDocument/didSave": // notif
|
|
var params DidSaveTextDocumentParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
err := server.DidSave(ctx, ¶ms)
|
|
return reply(ctx, nil, err)
|
|
case "textDocument/willSave": // notif
|
|
var params WillSaveTextDocumentParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
err := server.WillSave(ctx, ¶ms)
|
|
return reply(ctx, nil, err)
|
|
case "workspace/didChangeWatchedFiles": // notif
|
|
var params DidChangeWatchedFilesParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
err := server.DidChangeWatchedFiles(ctx, ¶ms)
|
|
return reply(ctx, nil, err)
|
|
case "$/setTraceNotification": // notif
|
|
var params SetTraceParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
err := server.SetTraceNotification(ctx, ¶ms)
|
|
return reply(ctx, nil, err)
|
|
case "$/logTraceNotification": // notif
|
|
var params LogTraceParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
err := server.LogTraceNotification(ctx, ¶ms)
|
|
return reply(ctx, nil, err)
|
|
case "textDocument/implementation": // req
|
|
var params ImplementationParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.Implementation(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/typeDefinition": // req
|
|
var params TypeDefinitionParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.TypeDefinition(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/documentColor": // req
|
|
var params DocumentColorParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.DocumentColor(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/colorPresentation": // req
|
|
var params ColorPresentationParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.ColorPresentation(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/foldingRange": // req
|
|
var params FoldingRangeParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.FoldingRange(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/declaration": // req
|
|
var params DeclarationParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.Declaration(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/selectionRange": // req
|
|
var params SelectionRangeParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.SelectionRange(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "initialize": // req
|
|
var params ParamInitialize
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.Initialize(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "shutdown": // req
|
|
if len(r.Params()) > 0 {
|
|
return reply(ctx, nil, fmt.Errorf("%w: expected no params", jsonrpc2.ErrInvalidParams))
|
|
}
|
|
err := server.Shutdown(ctx)
|
|
return reply(ctx, nil, err)
|
|
case "textDocument/willSaveWaitUntil": // req
|
|
var params WillSaveTextDocumentParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.WillSaveWaitUntil(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/completion": // req
|
|
var params CompletionParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.Completion(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "completionItem/resolve": // req
|
|
var params CompletionItem
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.Resolve(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/hover": // req
|
|
var params HoverParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.Hover(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/signatureHelp": // req
|
|
var params SignatureHelpParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.SignatureHelp(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/definition": // req
|
|
var params DefinitionParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.Definition(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/references": // req
|
|
var params ReferenceParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.References(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/documentHighlight": // req
|
|
var params DocumentHighlightParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.DocumentHighlight(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/documentSymbol": // req
|
|
var params DocumentSymbolParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.DocumentSymbol(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/codeAction": // req
|
|
var params CodeActionParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.CodeAction(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "workspace/symbol": // req
|
|
var params WorkspaceSymbolParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.Symbol(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/codeLens": // req
|
|
var params CodeLensParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.CodeLens(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "codeLens/resolve": // req
|
|
var params CodeLens
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.ResolveCodeLens(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/documentLink": // req
|
|
var params DocumentLinkParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.DocumentLink(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "documentLink/resolve": // req
|
|
var params DocumentLink
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.ResolveDocumentLink(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/formatting": // req
|
|
var params DocumentFormattingParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.Formatting(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/rangeFormatting": // req
|
|
var params DocumentRangeFormattingParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.RangeFormatting(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/onTypeFormatting": // req
|
|
var params DocumentOnTypeFormattingParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.OnTypeFormatting(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/rename": // req
|
|
var params RenameParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.Rename(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/prepareRename": // req
|
|
var params PrepareRenameParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.PrepareRename(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "workspace/executeCommand": // req
|
|
var params ExecuteCommandParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.ExecuteCommand(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/prepareCallHierarchy": // req
|
|
var params CallHierarchyPrepareParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.PrepareCallHierarchy(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "callHierarchy/incomingCalls": // req
|
|
var params CallHierarchyIncomingCallsParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.IncomingCalls(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "callHierarchy/outgoingCalls": // req
|
|
var params CallHierarchyOutgoingCallsParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.OutgoingCalls(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/semanticTokens": // req
|
|
var params SemanticTokensParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.SemanticTokens(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/semanticTokens/edits": // req
|
|
var params SemanticTokensEditsParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.SemanticTokensEdits(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
case "textDocument/semanticTokens/range": // req
|
|
var params SemanticTokensRangeParams
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.SemanticTokensRange(ctx, ¶ms)
|
|
return reply(ctx, resp, err)
|
|
default:
|
|
var params interface{}
|
|
if err := json.Unmarshal(r.Params(), ¶ms); err != nil {
|
|
return sendParseError(ctx, reply, err)
|
|
}
|
|
resp, err := server.NonstandardRequest(ctx, r.Method(), params)
|
|
return reply(ctx, resp, err)
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
type serverDispatcher struct {
|
|
*jsonrpc2.Conn
|
|
}
|
|
|
|
func (s *serverDispatcher) DidChangeWorkspaceFolders(ctx context.Context, params *DidChangeWorkspaceFoldersParams) error {
|
|
return s.Conn.Notify(ctx, "workspace/didChangeWorkspaceFolders", params)
|
|
}
|
|
|
|
func (s *serverDispatcher) WorkDoneProgressCancel(ctx context.Context, params *WorkDoneProgressCancelParams) error {
|
|
return s.Conn.Notify(ctx, "window/workDoneProgress/cancel", params)
|
|
}
|
|
|
|
func (s *serverDispatcher) Initialized(ctx context.Context, params *InitializedParams) error {
|
|
return s.Conn.Notify(ctx, "initialized", params)
|
|
}
|
|
|
|
func (s *serverDispatcher) Exit(ctx context.Context) error {
|
|
return s.Conn.Notify(ctx, "exit", nil)
|
|
}
|
|
|
|
func (s *serverDispatcher) DidChangeConfiguration(ctx context.Context, params *DidChangeConfigurationParams) error {
|
|
return s.Conn.Notify(ctx, "workspace/didChangeConfiguration", params)
|
|
}
|
|
|
|
func (s *serverDispatcher) DidOpen(ctx context.Context, params *DidOpenTextDocumentParams) error {
|
|
return s.Conn.Notify(ctx, "textDocument/didOpen", params)
|
|
}
|
|
|
|
func (s *serverDispatcher) DidChange(ctx context.Context, params *DidChangeTextDocumentParams) error {
|
|
return s.Conn.Notify(ctx, "textDocument/didChange", params)
|
|
}
|
|
|
|
func (s *serverDispatcher) DidClose(ctx context.Context, params *DidCloseTextDocumentParams) error {
|
|
return s.Conn.Notify(ctx, "textDocument/didClose", params)
|
|
}
|
|
|
|
func (s *serverDispatcher) DidSave(ctx context.Context, params *DidSaveTextDocumentParams) error {
|
|
return s.Conn.Notify(ctx, "textDocument/didSave", params)
|
|
}
|
|
|
|
func (s *serverDispatcher) WillSave(ctx context.Context, params *WillSaveTextDocumentParams) error {
|
|
return s.Conn.Notify(ctx, "textDocument/willSave", params)
|
|
}
|
|
|
|
func (s *serverDispatcher) DidChangeWatchedFiles(ctx context.Context, params *DidChangeWatchedFilesParams) error {
|
|
return s.Conn.Notify(ctx, "workspace/didChangeWatchedFiles", params)
|
|
}
|
|
|
|
func (s *serverDispatcher) SetTraceNotification(ctx context.Context, params *SetTraceParams) error {
|
|
return s.Conn.Notify(ctx, "$/setTraceNotification", params)
|
|
}
|
|
|
|
func (s *serverDispatcher) LogTraceNotification(ctx context.Context, params *LogTraceParams) error {
|
|
return s.Conn.Notify(ctx, "$/logTraceNotification", params)
|
|
}
|
|
func (s *serverDispatcher) Implementation(ctx context.Context, params *ImplementationParams) (Definition /*Definition | DefinitionLink[] | null*/, error) {
|
|
var result Definition /*Definition | DefinitionLink[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/implementation", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) TypeDefinition(ctx context.Context, params *TypeDefinitionParams) (Definition /*Definition | DefinitionLink[] | null*/, error) {
|
|
var result Definition /*Definition | DefinitionLink[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/typeDefinition", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) DocumentColor(ctx context.Context, params *DocumentColorParams) ([]ColorInformation, error) {
|
|
var result []ColorInformation
|
|
if err := Call(ctx, s.Conn, "textDocument/documentColor", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) ColorPresentation(ctx context.Context, params *ColorPresentationParams) ([]ColorPresentation, error) {
|
|
var result []ColorPresentation
|
|
if err := Call(ctx, s.Conn, "textDocument/colorPresentation", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) FoldingRange(ctx context.Context, params *FoldingRangeParams) ([]FoldingRange /*FoldingRange[] | null*/, error) {
|
|
var result []FoldingRange /*FoldingRange[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/foldingRange", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) Declaration(ctx context.Context, params *DeclarationParams) (Declaration /*Declaration | DeclarationLink[] | null*/, error) {
|
|
var result Declaration /*Declaration | DeclarationLink[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/declaration", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) SelectionRange(ctx context.Context, params *SelectionRangeParams) ([]SelectionRange /*SelectionRange[] | null*/, error) {
|
|
var result []SelectionRange /*SelectionRange[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/selectionRange", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) Initialize(ctx context.Context, params *ParamInitialize) (*InitializeResult, error) {
|
|
var result *InitializeResult
|
|
if err := Call(ctx, s.Conn, "initialize", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) Shutdown(ctx context.Context) error {
|
|
return Call(ctx, s.Conn, "shutdown", nil, nil)
|
|
}
|
|
|
|
func (s *serverDispatcher) WillSaveWaitUntil(ctx context.Context, params *WillSaveTextDocumentParams) ([]TextEdit /*TextEdit[] | null*/, error) {
|
|
var result []TextEdit /*TextEdit[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/willSaveWaitUntil", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) Completion(ctx context.Context, params *CompletionParams) (*CompletionList /*CompletionItem[] | CompletionList | null*/, error) {
|
|
var result *CompletionList /*CompletionItem[] | CompletionList | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/completion", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) Resolve(ctx context.Context, params *CompletionItem) (*CompletionItem, error) {
|
|
var result *CompletionItem
|
|
if err := Call(ctx, s.Conn, "completionItem/resolve", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) Hover(ctx context.Context, params *HoverParams) (*Hover /*Hover | null*/, error) {
|
|
var result *Hover /*Hover | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/hover", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) SignatureHelp(ctx context.Context, params *SignatureHelpParams) (*SignatureHelp /*SignatureHelp | null*/, error) {
|
|
var result *SignatureHelp /*SignatureHelp | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/signatureHelp", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) Definition(ctx context.Context, params *DefinitionParams) (Definition /*Definition | DefinitionLink[] | null*/, error) {
|
|
var result Definition /*Definition | DefinitionLink[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/definition", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) References(ctx context.Context, params *ReferenceParams) ([]Location /*Location[] | null*/, error) {
|
|
var result []Location /*Location[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/references", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) DocumentHighlight(ctx context.Context, params *DocumentHighlightParams) ([]DocumentHighlight /*DocumentHighlight[] | null*/, error) {
|
|
var result []DocumentHighlight /*DocumentHighlight[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/documentHighlight", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) DocumentSymbol(ctx context.Context, params *DocumentSymbolParams) ([]interface{} /*SymbolInformation[] | DocumentSymbol[] | null*/, error) {
|
|
var result []interface{} /*SymbolInformation[] | DocumentSymbol[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/documentSymbol", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) CodeAction(ctx context.Context, params *CodeActionParams) ([]CodeAction /*(Command | CodeAction)[] | null*/, error) {
|
|
var result []CodeAction /*(Command | CodeAction)[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/codeAction", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) Symbol(ctx context.Context, params *WorkspaceSymbolParams) ([]SymbolInformation /*SymbolInformation[] | null*/, error) {
|
|
var result []SymbolInformation /*SymbolInformation[] | null*/
|
|
if err := Call(ctx, s.Conn, "workspace/symbol", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) CodeLens(ctx context.Context, params *CodeLensParams) ([]CodeLens /*CodeLens[] | null*/, error) {
|
|
var result []CodeLens /*CodeLens[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/codeLens", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) ResolveCodeLens(ctx context.Context, params *CodeLens) (*CodeLens, error) {
|
|
var result *CodeLens
|
|
if err := Call(ctx, s.Conn, "codeLens/resolve", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) DocumentLink(ctx context.Context, params *DocumentLinkParams) ([]DocumentLink /*DocumentLink[] | null*/, error) {
|
|
var result []DocumentLink /*DocumentLink[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/documentLink", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) ResolveDocumentLink(ctx context.Context, params *DocumentLink) (*DocumentLink, error) {
|
|
var result *DocumentLink
|
|
if err := Call(ctx, s.Conn, "documentLink/resolve", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) Formatting(ctx context.Context, params *DocumentFormattingParams) ([]TextEdit /*TextEdit[] | null*/, error) {
|
|
var result []TextEdit /*TextEdit[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/formatting", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) RangeFormatting(ctx context.Context, params *DocumentRangeFormattingParams) ([]TextEdit /*TextEdit[] | null*/, error) {
|
|
var result []TextEdit /*TextEdit[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/rangeFormatting", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) OnTypeFormatting(ctx context.Context, params *DocumentOnTypeFormattingParams) ([]TextEdit /*TextEdit[] | null*/, error) {
|
|
var result []TextEdit /*TextEdit[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/onTypeFormatting", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) Rename(ctx context.Context, params *RenameParams) (*WorkspaceEdit /*WorkspaceEdit | null*/, error) {
|
|
var result *WorkspaceEdit /*WorkspaceEdit | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/rename", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) PrepareRename(ctx context.Context, params *PrepareRenameParams) (*Range /*Range | { range: Range, placeholder: string } | null*/, error) {
|
|
var result *Range /*Range | { range: Range, placeholder: string } | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/prepareRename", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) ExecuteCommand(ctx context.Context, params *ExecuteCommandParams) (interface{} /*any | null*/, error) {
|
|
var result interface{} /*any | null*/
|
|
if err := Call(ctx, s.Conn, "workspace/executeCommand", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) PrepareCallHierarchy(ctx context.Context, params *CallHierarchyPrepareParams) ([]CallHierarchyItem /*CallHierarchyItem[] | null*/, error) {
|
|
var result []CallHierarchyItem /*CallHierarchyItem[] | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/prepareCallHierarchy", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) IncomingCalls(ctx context.Context, params *CallHierarchyIncomingCallsParams) ([]CallHierarchyIncomingCall /*CallHierarchyIncomingCall[] | null*/, error) {
|
|
var result []CallHierarchyIncomingCall /*CallHierarchyIncomingCall[] | null*/
|
|
if err := Call(ctx, s.Conn, "callHierarchy/incomingCalls", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) OutgoingCalls(ctx context.Context, params *CallHierarchyOutgoingCallsParams) ([]CallHierarchyOutgoingCall /*CallHierarchyOutgoingCall[] | null*/, error) {
|
|
var result []CallHierarchyOutgoingCall /*CallHierarchyOutgoingCall[] | null*/
|
|
if err := Call(ctx, s.Conn, "callHierarchy/outgoingCalls", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) SemanticTokens(ctx context.Context, params *SemanticTokensParams) (*SemanticTokens /*SemanticTokens | null*/, error) {
|
|
var result *SemanticTokens /*SemanticTokens | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/semanticTokens", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) SemanticTokensEdits(ctx context.Context, params *SemanticTokensEditsParams) (interface{} /* SemanticTokens | SemanticTokensEdits | nil*/, error) {
|
|
var result interface{} /* SemanticTokens | SemanticTokensEdits | nil*/
|
|
if err := Call(ctx, s.Conn, "textDocument/semanticTokens/edits", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) SemanticTokensRange(ctx context.Context, params *SemanticTokensRangeParams) (*SemanticTokens /*SemanticTokens | null*/, error) {
|
|
var result *SemanticTokens /*SemanticTokens | null*/
|
|
if err := Call(ctx, s.Conn, "textDocument/semanticTokens/range", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) NonstandardRequest(ctx context.Context, method string, params interface{}) (interface{}, error) {
|
|
var result interface{}
|
|
if err := Call(ctx, s.Conn, method, params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|