Skip to content

Remove LSP binaries from VSCode-Neva and instead include to Neva-CLI #879

@emil14

Description

@emil14

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 are stdio | 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

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions