Language Servers¶
By default jupyter-lsp
does not come with any language servers preinstalled. However, we will try to use them if they are installed and we know about them (i.e. someone contributed a full specification).
You can disable auto-detection by configuring autodetect
You can add another language server for languages that are not listed on this page:
using a minimal JSON or Python configuration file (good for experimenting or configuring a niche server), or
contributing a full specification (to enable better integration and help other users of the same language)
The existing language servers are listed on the official list and on the community-curated list.
For the language servers in the tables below, use one of the suggested package managers to install them: these implementations are tested to work with jupyter-lsp
.
Notebook-Optimized Language Servers¶
These servers have support for notebooks and file editors. The pyls
and r-languageserver
are well-tested, while jedi
and Julia
servers are experimental. Please only install one language server per language (jedi
or pyls
for Python - not both).
[5]:
Languages | Implementation | Installation |
---|---|---|
python |
jedi-language-server |
|
julia |
julia-language-server |
|
python |
pyls |
|
r |
r-languageserver |
|
The Scala language server (metals
) is not currently auto-detected, but can be configured as demonstrated in the configuration example.
NodeJS-based Language Servers¶
These servers have mostly been tested with file editors.
[6]:
Languages | Implementation | Installation |
---|---|---|
bash sh |
bash-language-server |
|
dockerfile |
dockerfile-language-server-nodejs |
|
javascript jsx typescript typescript-jsx typescriptreact javascriptreact |
javascript-typescript-langserver |
|
sql |
sql-language-server |
|
markdown ipythongfm gfm |
unified-language-server |
|
css less scss |
vscode-css-languageserver-bin |
|
html |
vscode-html-languageserver-bin |
|
json |
vscode-json-languageserver-bin |
|
yaml |
yaml-language-server |
|
NodeJS is a prerequisite for installation of any of the above language servers; you can get it with:
conda install -c conda-forge nodejs
# or one of the following, as an administrator
choco install nodejs # Windows with Chocolatey
sudo apt-get install nodejs # Debian/Ubuntu
sudo brew install nodejs # MacOS with Homebrew
sudo dnf install nodejs # Fedora
sudo yum install nodejs # RHEL/CentOS
Example: Getting All the NodeJS-based Language Servers¶
A number of language servers are built on the reference implementation, powered by NodeJS. The most reliable place to install these is in a node_modules
in the directory where you launch jupyter lab
.
For example, to install all the servers which are tested as part of jupyterlab-lsp
:
jlpm add --dev \
bash-language-server \
vscode-css-languageserver-bin \
dockerfile-language-server-nodejs \
vscode-html-languageserver-bin \
javascript-typescript-langserver \
vscode-json-languageserver-bin \
yaml-language-server
This will create (or add to):
package.json
(check this in!)yarn.lock
(check this in!)node_modules/
(add to your VCS ignore file)
If you wish to install these someplace else, you may need to specify where you install them with extra_node_roots.
Other Scientific Languages¶
These servers have been mostly tested with file editor.
[7]:
Languages | Implementation | Installation |
---|---|---|
tex latex |
texlab |
|
Example: Getting a \(\LaTeX\) stack¶
conda install -y conda-forge tectonic texlab chktex
This will install:
tectonic
, a cross-platform \(\LaTeX\) processing toolnote, it will download a large number of packages when first executed
texlab
, a Language Server for.tex
files that supports completion and reference navigationchktex
, a.tex
style checker