go/internal/lsp
Rob Findley 15eebf7e82 internal/lsp: update the fuzzy matcher to operate on chunks
We can avoid allocating strings when performing workspace symbol search
by having the fuzzy match operate directly on chunks.

When operating on a single string, this slows down the matcher slightly
(perhaps 10%) due to copying bytes rather than accessing the string
directly. We could work around this using unsafe, but this could also be
mitigated by generics.

Benchmark ("test" in x/tools): 48ms->46ms
Benchmark ("test" in kubernetes): 868ms->857ms

Change-Id: Icf0f15aaa5cc3c875cf157a7b90db801045d9ed4
Reviewed-on: https://go-review.googlesource.com/c/tools/+/338694
Trust: Robert Findley <rfindley@google.com>
Run-TryBot: Robert Findley <rfindley@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2021-08-09 20:21:00 +00:00
..
analysis internal/lsp: add support for extracting non-nested returns 2021-04-27 20:37:52 +00:00
browser all: replace all usages of os/exec with golang.org/x/sys/execabs 2021-01-19 22:25:03 +00:00
cache internal/lsp: precompute workspace symbols 2021-08-09 20:20:17 +00:00
cmd internal/lsp: add extract to method code action 2021-07-23 18:08:39 +00:00
command internal/lsp/command: minor clean-up of StartDebugging description 2021-06-11 16:06:07 +00:00
debug internal/lsp/source/completion: avoid a panic in package completion 2021-05-10 23:22:37 +00:00
diff all: add copyright notices to files that are missing them 2021-01-06 17:23:47 +00:00
fake gopls/internal/regtest: add a flag to profile didChange handling 2021-07-13 12:52:46 +00:00
fuzzy internal/lsp: update the fuzzy matcher to operate on chunks 2021-08-09 20:21:00 +00:00
helper internal/lsp/protocol: latest version of LSP 2021-04-20 19:23:16 +00:00
lsppos internal/lsp/source: compute imports text edits from scratch 2021-07-22 17:13:07 +00:00
lsprpc internal/lsp/lsprpc: fix returning connection error on disconnect 2021-08-04 13:50:16 +00:00
mod internal/lsp: in degraded mode, limit the workspace to active packages 2021-07-26 20:36:31 +00:00
progress internal/lsp: move the progress tracker to the session 2021-06-16 01:01:29 +00:00
protocol internal/lsp/protocol: bring LSP protocol up to date 2021-08-03 20:45:05 +00:00
regtest internal/lsp/source: compute imports text edits from scratch 2021-07-22 17:13:07 +00:00
snippet internal/lsp/source/completion: add postfix snippet completions 2021-03-29 17:27:46 +00:00
source internal/lsp: update the fuzzy matcher to operate on chunks 2021-08-09 20:21:00 +00:00
template internal/lsp/template: improve error and quote handling 2021-08-03 16:06:16 +00:00
testdata internal/lsp: precompute workspace symbols 2021-08-09 20:20:17 +00:00
tests internal/lsp: add extract to method code action 2021-07-23 18:08:39 +00:00
README.md internal/lsp: add READMEs that describe tests, how to run tests 2020-12-03 17:03:53 +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: add extract to method code action 2021-07-23 18:08:39 +00:00
code_lens.go internal/lsp: switch to the new command API 2021-02-09 22:09:28 +00:00
command.go internal/lsp: move the progress tracker to the session 2021-06-16 01:01:29 +00:00
completion.go internal/lsp: support template files 2021-05-05 01:45:45 +00:00
completion_test.go internal/lsp/completion: move postfix completions behind option 2021-03-29 18:55:49 +00:00
debounce.go internal/lsp: adopt bcmills' suggestion for an improved debouncer API 2021-07-13 16:40:23 +00:00
debounce_test.go internal/lsp: adopt bcmills' suggestion for an improved debouncer API 2021-07-13 16:40:23 +00:00
definition.go internal/lsp: fix no definition when importShortcut is link 2021-05-10 21:56:33 +00:00
diagnostics.go internal/lsp: in degraded mode, limit the workspace to active packages 2021-07-26 20:36:31 +00:00
folding_range.go all: add copyright notices to files that are missing them 2021-01-06 17:23:47 +00:00
format.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
general.go internal/lsp: move the progress tracker to the session 2021-06-16 01:01:29 +00:00
highlight.go internal/lsp: support template files 2021-05-05 01:45:45 +00:00
hover.go internal/lsp: support template files 2021-05-05 01:45:45 +00:00
implementation.go internal/lsp/cache: ref-count snapshots 2020-08-03 22:08:54 +00:00
link.go internal/lsp: add ?utm_source=gopls to links to pkg.go.dev 2020-11-16 00:15:58 +00:00
lsp_test.go internal/lsp: add extract to method code action 2021-07-23 18:08:39 +00:00
references.go internal/lsp: support template files 2021-05-05 01:45:45 +00:00
rename.go internal/lsp/source: make it an error to rename embedded fields 2021-01-26 13:52:46 +00:00
reset_golden.sh
semantic.go internal/lsp: handle invalid positions in semantic token debug logic 2021-08-02 20:18:07 +00:00
server.go internal/lsp: add a setting to batch didChangeWatchedFile notifications 2021-07-08 19:55:54 +00:00
server_gen.go internal/lsp: make ShowDocument RPC available to gopls 2021-05-03 16:38:18 +00:00
signature_help.go internal/lsp: update to latest version of LSP protocol 2021-02-02 11:32:59 +00:00
symbols.go internal/lsp: support template files 2021-05-05 01:45:45 +00:00
text_synchronization.go internal/lsp: signal diagnostic completion if modification failed 2021-07-13 20:49:08 +00:00
workspace.go internal/lsp: report used semantic token order in registerCapability 2021-05-19 16:08:23 +00:00
workspace_symbol.go internal/lsp/source: add a new symbolStyle configuration option 2020-06-26 17:13:37 +00:00

README.md

lsp

internal/lsp provides much of the Language Server Protocol (lsp) implementation for gopls.

Documentation for users and contributors can be found in the gopls/doc directory.