internal/lsp: ignore errors for completion and signature help
This change makes sure that we never return error messages for
completions and signature help requests - just empty results.
Change-Id: I00d75cd116daab63beb07f2344e47aac01bb64ee
Reviewed-on: https://go-review.googlesource.com/c/tools/+/170958
Reviewed-by: Ian Cottrell <iancottrell@google.com>
Run-TryBot: Ian Cottrell <iancottrell@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
diff --git a/internal/lsp/completion.go b/internal/lsp/completion.go
index 1ea9118..fa3a6a6 100644
--- a/internal/lsp/completion.go
+++ b/internal/lsp/completion.go
@@ -33,7 +33,8 @@
}
items, prefix, err := source.Completion(ctx, f, rng.Start)
if err != nil {
- return nil, err
+ s.log.Infof(ctx, "no completions found for %s:%v:%v", uri, int(params.Position.Line), int(params.Position.Character))
+ items = []source.CompletionItem{}
}
return &protocol.CompletionList{
IsIncomplete: false,
diff --git a/internal/lsp/server.go b/internal/lsp/server.go
index b26a971..d41aa60 100644
--- a/internal/lsp/server.go
+++ b/internal/lsp/server.go
@@ -395,7 +395,7 @@
}
info, err := source.SignatureHelp(ctx, f, rng.Start)
if err != nil {
- return nil, err
+ s.log.Infof(ctx, "no signature help for %s:%v:%v", uri, int(params.Position.Line), int(params.Position.Character))
}
return toProtocolSignatureHelp(info), nil
}
@@ -483,17 +483,14 @@
if err != nil {
return nil, err
}
-
spn, err := m.PointSpan(params.Position)
if err != nil {
return nil, err
}
-
rng, err := spn.Range(m.Converter)
if err != nil {
return nil, err
}
-
spans := source.Highlight(ctx, f, rng.Start)
return toProtocolHighlight(m, spans), nil
}
diff --git a/internal/lsp/signature_help.go b/internal/lsp/signature_help.go
index 0e54a50..7479db4 100644
--- a/internal/lsp/signature_help.go
+++ b/internal/lsp/signature_help.go
@@ -10,6 +10,9 @@
)
func toProtocolSignatureHelp(info *source.SignatureInformation) *protocol.SignatureHelp {
+ if info == nil {
+ return &protocol.SignatureHelp{}
+ }
return &protocol.SignatureHelp{
ActiveParameter: float64(info.ActiveParameter),
ActiveSignature: 0, // there is only ever one possible signature