Description
Problem
The language server protocol support for JupyterLab is currently provided by the jupyterlab-lsp extension. While this mono repo offers a complete package with a lot of features, it's not easy for JupyterLab core or other external extensions to use or extend LSP features. For example, Kite Autocomplete Extension for JupyterLab needs to vendor a lot of components from jupyterlab-lsp
to communicate with their completion engine over LSP.
I've been talking with @bollwyvl, @krassowski, @SylvainCorlay, and @afshin about the technical plan for integrating some core features of jupyterlab-lsp
into jupyterlab
. After the last meeting on 22 Avril, we came up with the following plan:
Proposed Solution
Since jupyterlab-lsp
is a mono repo containing both frontend and backend extensions, we need to extract some core components and move them to the jupyterlab
and jupyterlab-server
projects.
- Move the frontend components of
jupyterlab-lsp
that handle the language server initialization and communication into a package ofJupyterLab
. I'm working on this step at Integratejupyterlab-lsp
intojupyterlab
jupyterlab#12534 - Move the backend extension of
jupyterlab-lsp
(jupyter_lsp) into a separated repo, under Jupyter Server organization.jupyterlab_server
will depend onjupyter_lsp
for the LSP handlers on the backend.
Next step
Once the infrastructure for handling and communicating with language servers is landed into jupyterlab
, frontend features like code completion, code refactoring, or jump to... will be added progressively.
Additional context
Previous discussion #67