-
Notifications
You must be signed in to change notification settings - Fork 37
Open
Labels
Description
Problem
At the moment LSP-server binary is shipped with the VSCode extension. This approach has downsides:
- Extension is large ~77mb because includes 7 binaries for different os/arch combinations
- Code of the extension contains extra logic for selecting correct binary for user's platform
- We must update extension each time we update the language, because LSP uses compiler under the hood. Otherwise compiler used by extension might miss some bug-fixes or even be backward-incompatible with the latest CLI's version
- User must make they uses compatible versions of the CLI and extension, because extension is used for IDE support while CLI is used for running/building the code
Solution
This discussion proposes to remove LSP binaries from VSCode extension and instead add new command to Neva CLI that will run the LSP-server. It might look like this:
neva lsp -transport=stdio
neva lsp -transport=stdio -debug
neva lsp -transport=tcp -port=6007
neva lsp -transport=tcp -port=6007 -debug
API is the following:
transport
string flag, possible values arestdio | tcp
port
integer flag, only if-transport=tcp
debug
boolean flag, enables logging for all JSON-RPC request/responses
Upsides
- Small extension bundle
- Simpler extension logic
- Only update extension when frontend needs it
- Reduced chance of incompatible cli/extension combination (actually minimal)
Downsides
- Bigger Neva CLI binary (but increase is probably <=1mb)
- We need to update Neva CLI if we want to update LSP
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
No status