1
0
mirror of https://github.com/golang/go synced 2024-09-30 22:58:34 -06:00
go/internal/lsp
Muir Manders 7c0525f229 internal/lsp/source: improve func literal completions
When a signature doesn't name its params, we make up param
names when generating a corresponding func literal:

    var f func(myType) // no param name
    f = fun<> // completes to "func(mt myType) {}"

Previously we would abbreviate named types and fall back to "_" for
builtins or repeated names. We would require placeholders to be
enabled when using "_" so the user could name the param easily. That
left users that don't use placeholders with no completion at all in
this case.

I made the following improvements:
- Generate a name for all params. For builtin types we use the first
  letter, e.g. "i" for "int", "s" for "[]string". If a name is
  repeated, we append incrementing numeric suffixes. For example,
  "func(int, int32)" becomes "func(i1 int, i2 int32").
- No longer require placeholders to be enabled in any case.
- Fix handling of alias types so the param name and type name are
  based on the alias, not the aliasee.

I also tweaked formatVarType to qualify packages using a
types.Qualifier. I needed it to respect a qualifier that doesn't
qualify anything so I could format e.g. "http.Response" as just
"Response" to come up with param names.

Fixes golang/go#38416.

Change-Id: I0ce8a0a4e2485dda41a0aa696d9fd48bea595869
Reviewed-on: https://go-review.googlesource.com/c/tools/+/246262
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2020-08-15 16:17:26 +00:00
..
analysis internal/lsp: enhance fillstruct and fillreturns to fill with variables 2020-08-10 18:49:36 +00:00
browser internal/lsp: add version and bug commands 2019-05-11 04:16:02 +00:00
cache internal/lsp: add initial workspace load notification 2020-08-14 23:09:02 +00:00
cmd internal/lsp: add incoming calls hierarchy to gopls 2020-08-13 20:36:30 +00:00
debug internal/lsp: separate LSP files from FS files 2020-08-03 22:16:06 +00:00
diff internal/testenv: check that external 'diff' tool is the GNU version 2020-05-08 20:46:49 +00:00
fake internal/lsp: add a configuration to limit workspace scope to root URI 2020-08-11 01:57:04 +00:00
fuzzy internal/lsp: fix errors found by staticcheck 2020-03-19 19:20:54 +00:00
helper internal/lsp: change to helper.go to output a formatted file 2020-01-31 20:35:38 +00:00
lsprpc internal/lsp/cmd: make -remote consistent across commands 2020-08-12 19:50:22 +00:00
mod internal/lsp: extend the mod handle functions to handle multiple files 2020-08-12 18:23:14 +00:00
protocol internal/lsp/protocol/typescript: clean up type gen documentation 2020-08-08 14:55:51 +00:00
regtest internal/lsp/cache: always type check in default mode 2020-08-13 18:10:07 +00:00
snippet all: fix broken links to LSP specification 2019-10-02 18:32:53 +00:00
source internal/lsp/source: improve func literal completions 2020-08-15 16:17:26 +00:00
testdata internal/lsp/source: improve func literal completions 2020-08-15 16:17:26 +00:00
tests internal/lsp: add incoming calls hierarchy to gopls 2020-08-13 20:36:30 +00:00
call_hierarchy.go internal/lsp: release resources for call hierarchy file requests 2020-08-07 21:04:51 +00:00
code_action.go internal/lsp: extend the mod handle functions to handle multiple files 2020-08-12 18:23:14 +00:00
code_lens.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
command.go internal/lsp: add "run file benchmarks" code lens 2020-08-12 18:37:58 +00:00
completion_test.go internal/lsp/source: offer smart "append()" completions 2020-05-20 22:05:37 +00:00
completion.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
definition.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
diagnostics.go internal/lsp: check for context cancellation before showing messages 2020-08-13 23:17:17 +00:00
folding_range.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
format.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
general.go internal/lsp: add initial workspace load notification 2020-08-14 23:09:02 +00:00
highlight.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
hover.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
implementation.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
link.go internal/lsp: remove source.Cache 2020-08-05 22:08:24 +00:00
lsp_test.go internal/lsp: add incoming calls hierarchy to gopls 2020-08-13 20:36:30 +00:00
progress_test.go internal/lsp/progress: refactor progress reporting 2020-08-10 15:18:52 +00:00
progress.go internal/lsp/progress: refactor progress reporting 2020-08-10 15:18:52 +00:00
references.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
rename.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
reset_golden.sh internal/lsp: fix regeneration of golden files 2019-09-25 13:16:59 +00:00
server_gen.go internal/lsp/progress: refactor progress reporting 2020-08-10 15:18:52 +00:00
server.go internal/lsp: lowercase drive letters on Windows to fix file watching 2020-08-12 18:32:13 +00:00
signature_help.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
symbols.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
text_synchronization.go internal/lsp: remove extra go env GOMOD logic for single file mode 2020-08-11 17:27:22 +00:00
workspace_symbol.go internal/lsp/source: add a new symbolStyle configuration option 2020-06-26 17:13:37 +00:00
workspace.go internal/memoize: switch from GC-driven to explicit deletion 2020-08-10 19:02:17 +00:00