Language Servers

jupyter-lsp does not come with any Language Servers! However, we will try to use them if they are installed and we know about them. 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.

  • You can disable this feature by configuring autodetect

If you do not see a language you would like, but can find it one of these lists:

…you might be able to add it via configuration or build your own spec for the server in question.

Notebook-Optimized Language Servers

These servers have well-tested support for notebooks and file editors.

[5]:
Languages Implementation Installation
python
pyls
  • pip: pip install python-language-server[all]
  • conda: conda install -c conda-forge python-language-server
r
r-languageserver
  • cran: install.packages("languageserver")
  • conda: conda install -c conda-forge r-languageserver

NodeJS-based Language Servers

These servers have mostly been tested with file editors.

[6]:
Languages Implementation Installation
bash
sh
bash-language-server
  • npm: npm install --save-dev bash-language-server
  • yarn: yarn add --dev bash-language-server
  • jlpm: jlpm add --dev bash-language-server
dockerfile
dockerfile-language-server-nodejs
  • npm: npm install --save-dev dockerfile-language-server-nodejs
  • yarn: yarn add --dev dockerfile-language-server-nodejs
  • jlpm: jlpm add --dev dockerfile-language-server-nodejs
javascript
jsx
typescript
typescript-jsx
typescriptreact
javascriptreact
javascript-typescript-langserver
  • npm: npm install --save-dev javascript-typescript-langserver
  • yarn: yarn add --dev javascript-typescript-langserver
  • jlpm: jlpm add --dev javascript-typescript-langserver
sql
sql-language-server
  • npm: npm install --save-dev sql-language-server
  • yarn: yarn add --dev sql-language-server
  • jlpm: jlpm add --dev sql-language-server
markdown
ipythongfm
gfm
unified-language-server
  • npm: npm install --save-dev unified-language-server
  • yarn: yarn add --dev unified-language-server
  • jlpm: jlpm add --dev unified-language-server
css
less
scss
vscode-css-languageserver-bin
  • npm: npm install --save-dev vscode-css-languageserver-bin
  • yarn: yarn add --dev vscode-css-languageserver-bin
  • jlpm: jlpm add --dev vscode-css-languageserver-bin
html
vscode-html-languageserver-bin
  • npm: npm install --save-dev vscode-html-languageserver-bin
  • yarn: yarn add --dev vscode-html-languageserver-bin
  • jlpm: jlpm add --dev vscode-html-languageserver-bin
json
vscode-json-languageserver-bin
  • npm: npm install --save-dev vscode-json-languageserver-bin
  • yarn: yarn add --dev vscode-json-languageserver-bin
  • jlpm: jlpm add --dev vscode-json-languageserver-bin
yaml
yaml-language-server
  • npm: npm install --save-dev yaml-language-server
  • yarn: yarn add --dev yaml-language-server
  • jlpm: jlpm add --dev yaml-language-server

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 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
  • conda: conda install -c conda-forge texlab chktex

Example: Getting a \(\LaTeX\) stack

conda install -y conda-forge tectonic texlab chktex

This will install:

  • tectonic, a cross-platform \(\LaTeX\) processing tool

  • note, it will download a large number of packages when first executed

  • texlab, a Language Server for .tex files that supports completion and refernce navigation

  • chktex, a .tex style checker