mirror of
https://github.com/golang/go
synced 2024-11-18 15:14:44 -07:00
5091d647ee
Code generation has been unified, so that tsprotocol.go and tsserver.go are produced by the same program. tsprotocol.go is about 900 lines shorter, partly from removing boilerplate comments that golint no longer requires. (And partly by generating fewer unneeded types.) The choice made for a union type is commented with the set of types. There is no Go equivalent for union types, but making themn all interface{} would replace type checking at unmarshalling with checking runtime conversions. Intersection types (A&B) are sometimes embedded (struct{A;B;}, and sometimes expanded, as they have to be if A and B have fields with the same names. There are fewer embedded structs, which had been verbose and confusing to initialize. They have been replaced by types whose names end in Gn. Essentially all the generated *structs have been removed. This makes no difference in what the client sends, and the server may send a {} where it previously might have sent nothing. The benefit is that some nil tests can be removed. Thus 'omitempty' in json tags is just documentation that the element is optional in the protocol. The files that generate this code will be submitted later, but soon. Change-Id: I52b997d9c58de3d733fc8c6ce061e47ce2bdb100 Reviewed-on: https://go-review.googlesource.com/c/tools/+/207598 Run-TryBot: Peter Weinberger <pjw@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Cottrell <iancottrell@google.com>
840 lines
30 KiB
Go
840 lines
30 KiB
Go
package protocol
|
|
|
|
// Package protocol contains data types and code for LSP jsonrpcs
|
|
// generated automatically from vscode-languageserver-node
|
|
// commit: 635ab1fe6f8c57ce9402e573d007f24d6d290fd3
|
|
// last fetched Sun Oct 13 2019 10:14:32 GMT-0400 (Eastern Daylight Time)
|
|
|
|
// Code generated (see typescript/README.md) DO NOT EDIT.
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
|
|
"golang.org/x/tools/internal/jsonrpc2"
|
|
"golang.org/x/tools/internal/telemetry/log"
|
|
"golang.org/x/tools/internal/xcontext"
|
|
)
|
|
|
|
type Server interface {
|
|
DidChangeWorkspaceFolders(context.Context, *DidChangeWorkspaceFoldersParams) 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
|
|
CancelRequest(context.Context, *CancelParams) error
|
|
Progress(context.Context, *ProgressParams) 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) ([]DocumentSymbol /*SymbolInformation[] | DocumentSymbol[] | null*/, error)
|
|
CodeAction(context.Context, *CodeActionParams) (interface{} /*Command | 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) (interface{} /* Range | struct{; Range Range`json:"range"`; Placeholder string`json:"placeholder"`; } | nil*/, error)
|
|
ExecuteCommand(context.Context, *ExecuteCommandParams) (interface{} /*any | null*/, error)
|
|
}
|
|
|
|
func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, delivered bool) bool {
|
|
if delivered {
|
|
return false
|
|
}
|
|
if ctx.Err() != nil {
|
|
ctx := xcontext.Detach(ctx)
|
|
r.Reply(ctx, nil, jsonrpc2.NewErrorf(RequestCancelledError, ""))
|
|
return true
|
|
}
|
|
switch r.Method {
|
|
case "workspace/didChangeWorkspaceFolders": // notif
|
|
var params DidChangeWorkspaceFoldersParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
if err := h.server.DidChangeWorkspaceFolders(ctx, ¶ms); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "initialized": // notif
|
|
var params InitializedParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
if err := h.server.Initialized(ctx, ¶ms); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "exit": // notif
|
|
if err := h.server.Exit(ctx); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "workspace/didChangeConfiguration": // notif
|
|
var params DidChangeConfigurationParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
if err := h.server.DidChangeConfiguration(ctx, ¶ms); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/didOpen": // notif
|
|
var params DidOpenTextDocumentParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
if err := h.server.DidOpen(ctx, ¶ms); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/didChange": // notif
|
|
var params DidChangeTextDocumentParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
if err := h.server.DidChange(ctx, ¶ms); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/didClose": // notif
|
|
var params DidCloseTextDocumentParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
if err := h.server.DidClose(ctx, ¶ms); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/didSave": // notif
|
|
var params DidSaveTextDocumentParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
if err := h.server.DidSave(ctx, ¶ms); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/willSave": // notif
|
|
var params WillSaveTextDocumentParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
if err := h.server.WillSave(ctx, ¶ms); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "workspace/didChangeWatchedFiles": // notif
|
|
var params DidChangeWatchedFilesParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
if err := h.server.DidChangeWatchedFiles(ctx, ¶ms); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "$/cancelRequest": // notif
|
|
var params CancelParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
if err := h.server.CancelRequest(ctx, ¶ms); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "$/progress": // notif
|
|
var params ProgressParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
if err := h.server.Progress(ctx, ¶ms); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "$/setTraceNotification": // notif
|
|
var params SetTraceParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
if err := h.server.SetTraceNotification(ctx, ¶ms); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "$/logTraceNotification": // notif
|
|
var params LogTraceParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
if err := h.server.LogTraceNotification(ctx, ¶ms); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/implementation": // req
|
|
var params ImplementationParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.Implementation(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/typeDefinition": // req
|
|
var params TypeDefinitionParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.TypeDefinition(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/documentColor": // req
|
|
var params DocumentColorParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.DocumentColor(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/colorPresentation": // req
|
|
var params ColorPresentationParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.ColorPresentation(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/foldingRange": // req
|
|
var params FoldingRangeParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.FoldingRange(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/declaration": // req
|
|
var params DeclarationParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.Declaration(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/selectionRange": // req
|
|
var params SelectionRangeParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.SelectionRange(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "initialize": // req
|
|
var params ParamInitialize
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.Initialize(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "shutdown": // req
|
|
if r.Params != nil {
|
|
r.Reply(ctx, nil, jsonrpc2.NewErrorf(jsonrpc2.CodeInvalidParams, "Expected no params"))
|
|
return true
|
|
}
|
|
err := h.server.Shutdown(ctx)
|
|
if err := r.Reply(ctx, nil, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/willSaveWaitUntil": // req
|
|
var params WillSaveTextDocumentParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.WillSaveWaitUntil(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/completion": // req
|
|
var params CompletionParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.Completion(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "completionItem/resolve": // req
|
|
var params CompletionItem
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.Resolve(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/hover": // req
|
|
var params HoverParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.Hover(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/signatureHelp": // req
|
|
var params SignatureHelpParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.SignatureHelp(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/definition": // req
|
|
var params DefinitionParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.Definition(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/references": // req
|
|
var params ReferenceParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.References(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/documentHighlight": // req
|
|
var params DocumentHighlightParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.DocumentHighlight(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/documentSymbol": // req
|
|
var params DocumentSymbolParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.DocumentSymbol(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/codeAction": // req
|
|
var params CodeActionParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.CodeAction(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "workspace/symbol": // req
|
|
var params WorkspaceSymbolParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.Symbol(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/codeLens": // req
|
|
var params CodeLensParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.CodeLens(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "codeLens/resolve": // req
|
|
var params CodeLens
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.ResolveCodeLens(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/documentLink": // req
|
|
var params DocumentLinkParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.DocumentLink(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "documentLink/resolve": // req
|
|
var params DocumentLink
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.ResolveDocumentLink(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/formatting": // req
|
|
var params DocumentFormattingParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.Formatting(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/rangeFormatting": // req
|
|
var params DocumentRangeFormattingParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.RangeFormatting(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/onTypeFormatting": // req
|
|
var params DocumentOnTypeFormattingParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.OnTypeFormatting(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/rename": // req
|
|
var params RenameParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.Rename(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "textDocument/prepareRename": // req
|
|
var params PrepareRenameParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.PrepareRename(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
case "workspace/executeCommand": // req
|
|
var params ExecuteCommandParams
|
|
if err := json.Unmarshal(*r.Params, ¶ms); err != nil {
|
|
sendParseError(ctx, r, err)
|
|
return true
|
|
}
|
|
resp, err := h.server.ExecuteCommand(ctx, ¶ms)
|
|
if err := r.Reply(ctx, resp, err); err != nil {
|
|
log.Error(ctx, "", err)
|
|
}
|
|
return true
|
|
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
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) 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) CancelRequest(ctx context.Context, params *CancelParams) error {
|
|
return s.Conn.Notify(ctx, "$/cancelRequest", params)
|
|
}
|
|
|
|
func (s *serverDispatcher) Progress(ctx context.Context, params *ProgressParams) error {
|
|
return s.Conn.Notify(ctx, "$/progress", 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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "initialize", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return &result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) Shutdown(ctx context.Context) error {
|
|
return s.Conn.Call(ctx, "shutdown", nil, nil)
|
|
}
|
|
|
|
func (s *serverDispatcher) WillSaveWaitUntil(ctx context.Context, params *WillSaveTextDocumentParams) ([]TextEdit /*TextEdit[] | null*/, error) {
|
|
var result []TextEdit /*TextEdit[] | null*/
|
|
if err := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "textDocument/documentHighlight", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) DocumentSymbol(ctx context.Context, params *DocumentSymbolParams) ([]DocumentSymbol /*SymbolInformation[] | DocumentSymbol[] | null*/, error) {
|
|
var result []DocumentSymbol /*SymbolInformation[] | DocumentSymbol[] | null*/
|
|
if err := s.Conn.Call(ctx, "textDocument/documentSymbol", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) CodeAction(ctx context.Context, params *CodeActionParams) (interface{} /*Command | CodeAction*/ /*(Command | CodeAction)[] | null*/, error) {
|
|
var result interface{} /*Command | CodeAction*/ /*(Command | CodeAction)[] | null*/
|
|
if err := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "textDocument/rename", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return &result, nil
|
|
}
|
|
|
|
func (s *serverDispatcher) PrepareRename(ctx context.Context, params *PrepareRenameParams) (interface{} /* Range | struct{; Range Range`json:"range"`; Placeholder string`json:"placeholder"`; } | nil*/, error) {
|
|
var result interface{} /* Range | struct{; Range Range`json:"range"`; Placeholder string`json:"placeholder"`; } | nil*/
|
|
if err := s.Conn.Call(ctx, "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 := s.Conn.Call(ctx, "workspace/executeCommand", params, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|