1
0
mirror of https://github.com/golang/go synced 2024-11-19 00:24:41 -07:00
go/internal/lsp/source
Muir Manders 86caa796c7 internal/lsp: search candidate type's package for completions
When our expected type is a named type from another package, we now always
search that other package for completion candidates, even if it is not currently
imported.

Consider the example:

-- foo.go --
import "context"
func doSomething(ctx context.Context) {}

-- bar.go--
doSomething(<>)

"bar.go" doesn't import "context" yet, so normally you need to first import
"context" through whatever means before you get completion items from "context".
Now we notice that the expected type's package hasn't been imported yet and give
deep completions from "context".

Another use case is with literal completions. Consider:

-- foo.go --
import "bytes"
func doSomething(buf *bytes.Buffer) {}

-- bar.go--
doSomething(<>)

Now you will get a literal completion for "&bytes.Buffer{}" in "bar.go" even
though it hasn't imported "bytes" yet.

I had to pipe the import info around a bunch of places so the import is added
automatically for deep completions and literal completions.

Change-Id: Ie86af2aa64ee235038957c1eecf042f7ec2b329b
Reviewed-on: https://go-review.googlesource.com/c/tools/+/201207
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2019-10-30 06:26:58 +00:00
..
comment_test.go internal/lsp: convert comments to markdown before sending to client 2019-10-04 18:35:38 +00:00
comment.go internal/lsp: convert comments to markdown before sending to client 2019-10-04 18:35:38 +00:00
completion_format.go internal/lsp: search candidate type's package for completions 2019-10-30 06:26:58 +00:00
completion_keywords.go internal/lsp: add some keyword completions 2019-10-22 20:49:18 +00:00
completion_labels.go internal/lsp: fix label completion in range and type switch stmts 2019-10-22 21:33:09 +00:00
completion_literal.go internal/lsp: search candidate type's package for completions 2019-10-30 06:26:58 +00:00
completion_snippet.go internal/lsp: don't overwrite suffix when inserting completion 2019-10-02 20:07:45 +00:00
completion.go internal/lsp: search candidate type's package for completions 2019-10-30 06:26:58 +00:00
deep_completion.go internal/lsp: search candidate type's package for completions 2019-10-30 06:26:58 +00:00
diagnostics.go internal/lsp: remove analyzers from Analyze result 2019-10-25 02:35:17 +00:00
errors.go internal/lsp: move the missing imports handling into the metadata 2019-09-25 23:05:17 +00:00
folding_range.go internal/lsp: rework snapshots and cache FileHandles per-snapshot 2019-10-01 16:26:22 +00:00
format.go internal/lsp: move error range computations into cache package 2019-10-21 22:12:58 +00:00
highlight.go internal/lsp: stop cluttering logs with highlight errors 2019-10-07 17:20:23 +00:00
hover.go internal/lsp: don't associate package with snapshot 2019-10-23 20:24:04 +00:00
identifier.go internal/lsp: remove the pkg.view field, in preparation for CL 204079 2019-10-29 23:14:01 +00:00
imports_test.go internal/lsp: abstract the diff library so it can be substituted 2019-08-20 03:37:07 +00:00
imports.go internal/lsp: search candidate type's package for completions 2019-10-30 06:26:58 +00:00
options.go internal/lsp: disable completion time budget in tests 2019-10-25 16:51:05 +00:00
references.go internal/lsp: remove the pkg.view field, in preparation for CL 204079 2019-10-29 23:14:01 +00:00
rename_check.go internal/lsp: remove the pkg.view field, in preparation for CL 204079 2019-10-29 23:14:01 +00:00
rename.go internal/lsp: remove the pkg.view field, in preparation for CL 204079 2019-10-29 23:14:01 +00:00
signature_help.go internal/lsp: remove the pkg.view field, in preparation for CL 204079 2019-10-29 23:14:01 +00:00
source_test.go tools/gopls: add cmd support for references 2019-10-25 16:51:12 +00:00
suggested_fix.go internal/lsp: move error range computations into cache package 2019-10-21 22:12:58 +00:00
symbols.go internal/lsp: stop caching diagnostics on the package 2019-10-24 22:03:59 +00:00
tidy.go internal/lsp: support running go mod tidy as a code action 2019-09-20 13:08:46 +00:00
util.go internal/lsp: remove the pkg.view field, in preparation for CL 204079 2019-10-29 23:14:01 +00:00
view.go internal/lsp: remove the pkg.view field, in preparation for CL 204079 2019-10-29 23:14:01 +00:00