From b620e9ecbe281f2f0c982845e3e26010296c3991 Mon Sep 17 00:00:00 2001 From: Rebecca Stambler Date: Wed, 12 Dec 2018 13:57:52 -0500 Subject: [PATCH] internal/lsp: use rootURI as config.Dir in packages.Load This change was inspired by https://golang.org/cl/153777. Fixes golang/go#29174 Change-Id: I9d9a8b95e984c8e70160d199cd1efc5aa2964ef7 Reviewed-on: https://go-review.googlesource.com/c/153863 Reviewed-by: Ian Cottrell --- internal/lsp/cache/view.go | 3 ++- internal/lsp/lsp_test.go | 2 +- internal/lsp/server.go | 7 ++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/internal/lsp/cache/view.go b/internal/lsp/cache/view.go index 6d109f7f36b..48410a1f51e 100644 --- a/internal/lsp/cache/view.go +++ b/internal/lsp/cache/view.go @@ -21,9 +21,10 @@ type View struct { files map[source.URI]*File } -func NewView() *View { +func NewView(rootPath string) *View { return &View{ Config: &packages.Config{ + Dir: rootPath, Mode: packages.LoadSyntax, Fset: token.NewFileSet(), Tests: true, diff --git a/internal/lsp/lsp_test.go b/internal/lsp/lsp_test.go index d69387011a9..613c7684fac 100644 --- a/internal/lsp/lsp_test.go +++ b/internal/lsp/lsp_test.go @@ -58,7 +58,7 @@ func testLSP(t *testing.T, exporter packagestest.Exporter) { defer exported.Cleanup() s := &server{ - view: cache.NewView(), + view: cache.NewView(exported.Config.Dir), } // Merge the exported.Config with the view.Config. cfg := *exported.Config diff --git a/internal/lsp/server.go b/internal/lsp/server.go index b6259c07f8c..21941d5c63f 100644 --- a/internal/lsp/server.go +++ b/internal/lsp/server.go @@ -42,13 +42,18 @@ func (s *server) Initialize(ctx context.Context, params *protocol.InitializePara if s.initialized { return nil, jsonrpc2.NewErrorf(jsonrpc2.CodeInvalidRequest, "server already initialized") } - s.view = cache.NewView() s.initialized = true // mark server as initialized now // Check if the client supports snippets in completion items. s.snippetsSupported = params.Capabilities.TextDocument.Completion.CompletionItem.SnippetSupport s.signatureHelpEnabled = true + rootPath, err := source.URI(*params.RootURI).Filename() + if err != nil { + return nil, err + } + s.view = cache.NewView(rootPath) + return &protocol.InitializeResult{ Capabilities: protocol.ServerCapabilities{ CompletionProvider: protocol.CompletionOptions{