tools/internal/lsp
Muir Manders 4298585011 internal/lsp: provide deep completion candidates
Deep completion refers to searching through an object's fields and
methods for more completion candidates. For example:

func wantsInt(int) { }
var s struct { i int }
wantsInt(<>)

Will now give a candidate for "s.i" since its type matches the
expected type.

We limit to three deep completion results. In some cases there are
many useless deep completion matches. Showing too many options defeats
the purpose of "smart" completions. We also lower a completion item's
score according to its depth so that we favor shallower options. For
now we do not continue searching past function calls to limit our
search scope. In other words, we are not able to suggest results with
any chained fields/methods after the first method call.

Deep completions are behind the "useDeepCompletions" LSP config flag
for now.

Change-Id: I1b888c82e5c4b882f9718177ce07811e2bccbf22
GitHub-Last-Rev: 26522363730036e0b382a7bcd10aa1ed825f6866
GitHub-Pull-Request: golang/tools#100
Reviewed-on: https://go-review.googlesource.com/c/tools/+/177622
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2019-06-27 18:58:03 +00:00
..
browser internal/lsp: add version and bug commands 2019-05-11 04:16:02 +00:00
cache internal/lsp: modify check for a missing package 2019-06-27 18:28:18 +00:00
cmd internal/lsp: support a file belonging to multiple packages 2019-06-26 17:56:19 +00:00
debug internal/lsp: add telemetry stubs 2019-06-24 18:10:36 +00:00
diff internal/lsp: enable incrementalSync by default 2019-06-26 20:40:24 +00:00
protocol internal/jsonrpc2: refactor to enable a more advanced request 2019-06-27 03:33:22 +00:00
snippet internal/lsp: introduce snippet builder object 2019-04-25 18:37:29 +00:00
source internal/lsp: provide deep completion candidates 2019-06-27 18:58:03 +00:00
telemetry internal/lsp: add telemetry stubs 2019-06-24 18:10:36 +00:00
testdata internal/lsp: provide deep completion candidates 2019-06-27 18:58:03 +00:00
tests internal/lsp: provide deep completion candidates 2019-06-27 18:58:03 +00:00
xlog internal/lsp: add the ability to log back to the client 2019-04-01 16:22:08 +00:00
code_action.go internal/lsp: plumb suggested fixes through the LSP 2019-06-26 21:02:18 +00:00
completion.go internal/lsp: provide deep completion candidates 2019-06-27 18:58:03 +00:00
definition.go internal/lsp: attach documentation to signature help 2019-06-06 17:46:28 +00:00
diagnostics.go internal/lsp: plumb suggested fixes through the LSP 2019-06-26 21:02:18 +00:00
format.go internal/lsp: separate refactorings out of memoization CL 2019-06-25 16:04:30 +00:00
general.go internal/lsp: provide deep completion candidates 2019-06-27 18:58:03 +00:00
highlight.go internal/lsp: separate refactorings out of memoization CL 2019-06-25 16:04:30 +00:00
hover.go internal/lsp: attach documentation to signature help 2019-06-06 17:46:28 +00:00
link.go internal/lsp: separate refactorings out of memoization CL 2019-06-25 16:04:30 +00:00
lsp_test.go internal/lsp: provide deep completion candidates 2019-06-27 18:58:03 +00:00
references.go internal/lsp: support a file belonging to multiple packages 2019-06-26 17:56:19 +00:00
rename.go internal/lsp: separate refactorings out of memoization CL 2019-06-25 16:04:30 +00:00
reset_golden.sh internal/lsp: fix definition tests to use golden files 2019-05-10 21:06:55 +00:00
server.go internal/lsp: provide deep completion candidates 2019-06-27 18:58:03 +00:00
signature_help.go internal/lsp: reply with nil, rather than empty, signature help 2019-06-08 02:21:20 +00:00
symbols.go internal/lsp: separate refactorings out of memoization CL 2019-06-25 16:04:30 +00:00
text_synchronization.go internal/lsp: enable incrementalSync by default 2019-06-26 20:40:24 +00:00
util.go internal/span: change URI.Filename so it just returns the filename 2019-06-10 21:39:43 +00:00
workspace.go internal/lsp: build the packages config on demand from proper configuration 2019-05-21 17:12:43 +00:00