Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@krassowski/jupyterlab-lsp

jupyter-lsp1.1kBSD-3-Clause3.10.2TypeScript support: included

Language Server Protocol integration for JupyterLab

jupyter, jupyterlab, jupyterlab-extension, lsp, language-server-protocol, intellisense, code-intelligence, linting

readme

Language Server Protocol integration for Jupyter(Lab)

CI Documentation Status Python Demo R Demo Julia Demo Binder

Installation | Configuring | Changelog | Roadmap | Contributing | Extending

Features

Examples show Python code, but most features also work in R, bash, typescript, and many other languages.

Hover

Hover over any piece of code; if an underline appears, you can press <kbd>Ctrl</kbd> to get a tooltip with function/class signature, module documentation or any other piece of information that the language server provides

hover

Diagnostics

Critical errors have red underline, warnings are orange, etc. Hover over the underlined code to see a more detailed message

inspections

Jump to Definition and References

Use the context menu entry, or <kbd>Alt</kbd> + :computer_mouse: to jump to definitions/references (you can change it to <kbd>Ctrl</kbd>/<kbd>⌘</kbd> in settings); use <kbd>Alt</kbd> + <kbd>o</kbd> to jump back.

jump

Highlight References

Place your cursor on a variable, function, etc and all the usages will be highlighted

Automatic Completion and Continuous Hinting

  • Certain characters, for example '.' (dot) in Python, will automatically trigger completion.
  • You can choose to receive the completion suggestions as you type by enabling continuousHinting setting.

invoke

Automatic Signature Suggestions

Function signatures will automatically be displayed

signature

Kernel-less Autocompletion

Advanced static-analysis autocompletion without a running kernel

autocompletion

The runtime kernel suggestions are still there

When a kernel is available the suggestions from the kernel (such as keys of a dict and columns of a DataFrame) are merged with the suggestions from the Language Server (in notebook).

If the kernel is too slow to respond promptly only the Language Server suggestions will be shown (default threshold: 0.6s). You can configure the completer to not attempt to fetch the kernel completions if the kernel is busy (skipping the 0.6s timeout).

You can deactivate the kernel suggestions by adding "Kernel" to the disableCompletionsFrom in the completion section of Advanced Settings. Alternatively if you only want kernel completions you can add "LSP" to the same setting; Or add both if you like to code in hardcore mode and get no completions, or if another provider has been added.

Rename

Rename variables, functions and more, in both: notebooks and the file editor. Use the context menu option or the <kbd>F2</kbd> shortcut to invoke.

rename

Diagnostics panel

Sort and jump between the diagnostics using the diagnostics panel. Open it searching for "Show diagnostics panel" in JupyterLab commands palette or from the context menu. Use context menu on rows in the panel to filter out diagnostics or copy their message.

panel

Prerequisites

You will need to have both of the following installed:

  • JupyterLab >=4.1.0,<5.0.0a0
  • Python 3.9+

In addition, if you wish to use javascript, html, markdown or any other NodeJS-based language server you will need to have appropriate NodeJS version installed.

Note: Installation for JupyterLab 2.x requires a different procedure, please consult the documentation for the extension version 2.x.

Installation

For more extensive installation instructions, see the documentation.

For the current stable version, the following steps are recommended. Use of a python virtualenv or a conda env is also recommended.

  1. install python 3

    conda install -c conda-forge python=3
  2. install JupyterLab and the extensions

    conda install -c conda-forge 'jupyterlab>=4.1.0,<5.0.0a0' jupyterlab-lsp
    # or
    pip install 'jupyterlab>=4.1.0,<5.0.0a0' jupyterlab-lsp

    Note: jupyterlab-lsp provides both the server extension and the lab extension.

    Note: With conda, you could take advantage of the bundles: jupyter-lsp-python or jupyter-lsp-r to install both the server extension and the language server.

  3. install LSP servers for languages of your choice; for example, for Python (pylsp) and R (languageserver) servers:

    pip install 'python-lsp-server[all]'
    R -e 'install.packages("languageserver")'

    or from conda-forge

    conda install -c conda-forge python-lsp-server r-languageserver

    Please see our full list of supported language servers which includes installation hints for the common package managers (npm/pip/conda). In general, any LSP server from the Microsoft list should work after some additional configuration.

    Note: it is worth visiting the repository of each server you install as many provide additional configuration options.

  4. Restart JupyterLab

    If JupyterLab is running when you installed the extension, a restart is required for the server extension and any language servers to be recognized by JupyterLab.

  5. (Optional, IPython users only) to improve the performance of autocompletion, disable Jedi in IPython (the LSP servers for Python use Jedi too). You can do that temporarily with:

    %config Completer.use_jedi = False

    or permanently by setting c.Completer.use_jedi = False in your ipython_config.py file.

  6. (Optional, Linux/OSX-only) As a security measure by default Jupyter server only allows access to files under the Jupyter root directory (the place where you launch the Jupyter server). Thus, in order to allow jupyterlab-lsp to navigate to external files such as packages installed system-wide or to libraries inside a virtual environment (conda, pip, ...) this access control mechanism needs to be circumvented: inside your Jupyter root directory create a symlink named .lspsymlink_ pointing to your system root /.

    ln -s / .lsp_symlink

    As this symlink is a hidden file the Jupyter server must be instructed to serve hidden files. Either use the appropriate command line flag:

    jupyter lab --ContentsManager.allow_hidden=True

    or, alternatively, set the corresponding setting inside your jupyter_server_config.py.

    Help in implementing a custom ContentsManager which will enable navigating to external files without the symlink is welcome.

Configuring the servers

Server configurations can be edited using the Advanced Settings editor in JupyterLab (Settings > Advanced Settings Editor). For settings specific to each server, please see the table of language servers. Example settings might include:

{
  "language_servers": {
    "pylsp": {
      "serverSettings": {
        "pylsp.plugins.pydocstyle.enabled": true,
        "pylsp.plugins.pyflakes.enabled": false,
        "pylsp.plugins.flake8.enabled": true
      }
    },
    "r-languageserver": {
      "serverSettings": {
        "r.lsp.debug": false,
        "r.lsp.diagnostics": false
      }
    }
  }
}

The serverSettings key specifies the configurations sent to the language servers. These can be written using stringified dot accessors like above (in the VSCode style), or as nested JSON objects, e.g.:

{
  "language_servers": {
    "pylsp": {
      "serverSettings": {
        "pylsp": {
          "plugins": {
            "pydocstyle": {
              "enabled": true
            },
            "pyflakes": {
              "enabled": false
            },
            "flake8": {
              "enabled": true
            }
          }
        }
      }
    }
  }
}

Other configuration methods

Some language servers, such as pylsp, provide other configuration methods in addition to language-server configuration messages (accessed using the Advanced Settings Editor). For example, pylsp allows users to configure the server using a local configuration file. You can change the inspection/diagnostics for server plugins like pycodestyle there.

The exact configuration details will vary between operating systems (please see the configuration section of pycodestyle documentation), but as an example, on Linux you would simply need to create a file called ~/.config/pycodestyle, which may look like that:

[pycodestyle]
ignore = E402, E703
max-line-length = 120

In the example above:

  • ignoring E402 allows imports which are not on the very top of the file,
  • ignoring E703 allows terminating semicolon (useful for matplotlib plots),
  • the maximal allowed line length is increased to 120.

After changing the configuration you may need to restart the JupyterLab, and please be advised that the errors in configuration may prevent the servers from functioning properly.

Again, please do check the pycodestyle documentation for specific error codes, and check the configuration of other feature providers and language servers as needed.

Acknowledgements

This would not be possible without the fantastic initial work at wylieconlon/lsp-editor-adapter.

changelog

Changelog

@jupyter-lsp/jupyterlab-lsp (next)

  • bug fixes:
    • Don't look at editor under the mouse on mouse motion when the widget adapter is not connected (#1113)

jupyter-lsp 2.2.5

  • bug fixes:
    • fix for environment variables leaking into the parent environment (#1078)

jupyter-lsp 2.2.4

  • bug fixes:
    • fix websocket handler incorrectly inheriting from APIHandler rather than JupyterHandler (#1069)
    • remove unused notebook config entry point (#1069)
    • support latest version of typescript-language-server (#1064)

@jupyter-lsp/jupyterlab-lsp 5.1.0

Requires JupyterLab >=4.1.0,<5.0.0a0

  • new features:
    • populate table of contents with code symbols outline (experimental, file editor only)
  • bug fixes:
    • fix settings reconciliation for nested properties (#1051)
    • fix a regression introduced in v5.0.2 which meant that overrides for native kernel and context completion providers were never active (#1057)
    • reduces some warnings in places known to have false positives to debug statements (#1057)
    • highlights no longer get instantly removed when navigating to a beginning of cell from another cell (#1057)
    • with the use of the new extensionFactory API (#1057):
      • LSP features work more reliably as the correct virtual document and editor is known rather than found from heuristics
      • LSP CodeMirror extensions are not added to editors which do not have an LSP-enabled editor reducing spurious warnings and improving performance
      • LSP CodeMirror extensions are only added once the LSP server was connected
  • maintenance:
    • use new extensionFactory API allowing to remove workarounds that were needed to make the extension work in JupyterLab 4.0 (#1057)
    • remove no-longer needed patches for VirtualDocument as these were merged upstream and released in JupyterLab 4.1 (#1057)
    • update coverage, robot version and reporting approaches (#1052)
    • build against JupyterLab 4.1, fix tests (#1057)
    • bump ip from 2.0.0 to 2.0.1 (#1055)

jupyter-lsp 2.2.3

  • maintenance:
    • updates pyright config schema to v1.1.350

@jupyter-lsp/jupyterlab-lsp 5.0.3

  • bug fixes:
    • fix nested transclusions in JupyterLab 4.0.7+ (#1045)
    • fix completions when type is not defined (#1044)

@jupyter-lsp/jupyterlab-lsp 5.0.2

  • bug fixes:
    • fix native JupyterLab completion not working when LSP completion plugin is disabled (#1036)

jupyter-lsp 2.2.2

  • bug fixes:
    • address warning about renamed extension_points (#1035)
    • fix compatibility with jupyter server 1.x
    • fix an authentication-related security vulnerability (see the advisory for details)
  • enhancements:
    • add authorization support (lsp resource, jupyter-server v2+ only) - this allows server operators for fine grained access control, e.g. in case if specific users (such as guest or read-only users) should not be allowed to access LSP; this is in addition to authentication fixes

@jupyter-lsp/jupyterlab-lsp 5.0.1

  • bug fixes:
    • fix false “undefined name” in %%time and %%capture magics #1007 (thanks @i-aki-y!)
    • fix completion items for paths and other long items being cut off #1025
    • workaround issue with markdown lost on edit #1016
    • fix latex/Greek letters insertion and other completions which do not match prefix (do not pre-filter completions from kernel) #1022
    • fix completions in Console #1023
    • fix customising priority after pre-setting it with overrides.json #1027
    • fix jump to definitions in a file inside root in Pyright on Windows #1024
    • fix typos in setting title and help message #999 and #1010
  • maintenance:
    • fix bootstrap script #1021
    • bump axios from 1.2.1 to 1.6.2 #1019
    • bump @babel/traverse from 7.22.5 to 7.23.4 #1020

jupyter-lsp 2.2.1

  • bug fixes:
    • use APIHandler over JupyterHandler to get CORS OPTIONS #952 (thanks @zhanba!)
    • use shutil.which to discover npm executable on Windows (thanks @jameshurst!)
  • maintenance:
    • resolve traitlets type warnings, lint, remove six #1015
    • use sys.executable in stdio tests #998

@jupyter-lsp/jupyterlab-lsp 5.0.0

  • enhancements:
    • uses toast notifications instead of messages on status bar
    • diagnostics panel will be re-opened on reload
  • maintenance:
    • support JupyterLab 4
    • use upstream @jupyterlab/lsp package
    • use camelCase convention in TypeScript/JavaScript code
    • use @codemirror/linter to show diagnostics
      • this comes with a different style of underlines and custom tooltips
  • known issues/limitations:
    • configuration of language servers via JSON Settings Editor may result in a spurious warning due to a transitive clash with settings from the UI editor when using nested pattern (e.g. {pylsp: {flake8: {enabled: true}}}); the dotted pattern (e.g. {"pylsp.flake8.enabled": true}) does not lead to such problem.
    • enabling auto-invoke of completer requires toggling checkbox in both native and LSP Code Completion settings
    • robot mode does not support JupyterLab 4.0, hence robot LSP will not work either
    • renaming in docker files may not work on certain variables due to upstream tokenizer issue

Requires JupyterLab >=4.0.6,<5.0.0a0

@jupyter-lsp/jupyterlab-lsp 5.0.0-rc.1

  • restore re-use of unused standalone connections

@jupyter-lsp/jupyterlab-lsp 5.0.0-rc.0

  • fixes diagnostics not showing up in text editor in certain circumstances
  • fixes signature hover box not being clickable
  • improves performance by not creating a temporary editor to setup linter underline style
  • JSON overrides work again
  • fixes issue with syntax highlighting breaking when pasting multiple cells

Requires JupyterLab >=4.0.6,<5.0.0a0

@jupyter-lsp/jupyterlab-lsp 5.0.0-beta.1

  • fix highlights conflict with selection
  • fix scrolling to diagnostics and diagnostic rendering in windowed notebook
  • suppress kernel completer in transclusions

@jupyter-lsp/jupyterlab-lsp 5.0.0-beta.0

  • fix most regressions caught by tests in alpha
  • reopen diagnostics panel on reload
  • use toasts for notifications

@jupyter-lsp/jupyterlab-lsp 5.0.0-alpha.0

  • maintenance:
    • support JupyterLab 4

Requires JupyterLab >=4.0.5,<5.0.0a0

@jupyter-lsp/jupyterlab-lsp 4.3.0 (2023-09-21)

  • features:
  • extractor for spark SQL magic was added (#980, thanks @skbitsp)
  • classes needed to register custom adapters are now exported (#980, thanks @skbitsp)
    • using these classes is not recommended for new code as registration mechanism was rewritten in JupyterLab 4.0 and moved to @jupyterlab/lsp

@jupyter-lsp/jupyterlab-lsp 4.2.0 (2023-05-28)

  • features:
    • diagnostics can be ignored by severity level with new ignoreSeverities setting (#940)

jupyter-lsp 2.2.0 (2023-05-28)

  • bug fixes:
    • await sleep() coroutine (#939, thanks @jinzhen-lin)
    • limit attempts to initialise shadow file system to three trials (#936)
  • maintenance:
    • support bash-language-sever 4.3.2+ (#938, thanks @ackalker)

@jupyter-lsp/jupyterlab-lsp 4.1.0 (2023-04-24)

  • features:
    • make .virtual_documents optional - logic for solving URIs will now check if the server does not require it (#930)
  • bug fixes:
    • fix contrast of mark highlights in dark mode (#928)
    • fix conflict with block/rectangular selections on Alt + click (#927)
  • maintenance:
    • update texlab expectation (#929)

jupyter-lsp 2.1.0 (2023-04-24)

  • features:
    • make .virtual_documents optional - added requires_documents_on_disk spec field (default True, will become False in next major version) (#930)

@jupyter-lsp/jupyterlab-lsp 4.0.1 (2023-03-21)

  • bug fixes
    • overrides from overrides.json are now picked up again (#919)

jupyter-lsp 2.0.1 (2023-03-21)

  • bug fixes:
    • pyright schema now includes required python. prefixes (#919)

@jupyter-lsp/jupyterlab-lsp 4.0.0 (2023-03-15)

Requires JupyterLab >=3.6.0,<4.0.0a0 and Python 3.8 or newer.

  • features:
    • implement jump target selector and jump to references ([#739])
    • implement settings UI using native JupyterLab 3.3 UI (#778)
    • add option to show hover tooltip automatically (#864, thanks @yamaton)
    • implement eliding for long paths/files in completer (#893)
    • allow to pass default workspace config (serverSettings) in specs (#856)
  • bug fixes:
    • use correct websocket URL if configured as different from base URL (#820, thanks @MikeSem)
    • clean up all completer styles when completer feature is disabled (#829).
    • fix undefined being inserted for path-like completion items with no insertText (#833)
    • reduce signature flickering when typing and hover flicker when moving mouse (#836)
    • fix sporadic misplacement of hover tooltips (#860, thanks @yamaton)
    • fix hover tooltip not updated after character deletions (#867, thanks @yamaton)
    • handle potential race condition in feature settings loading (#882)
  • refactoring:
    • changed NPM packages namespace from @krassowski to @jupyter-lsp ([#862])
    • move client capabilities to features (#738)
  • downstreams:
    • use the host application's HTTP settings for requests to the REST and WebSocket routes ([#881])
    • source maps are provided for improved debugging (#882)
    • the derived JSON Schema types are avilable as SCHEMA (#882)
  • documentation:
    • add missing --channel to conda instruction for texlab (#789, thanks @justin-f-perez)
    • remove references to pylsp fork (#800 and #814, thanks @joelostblom and @nickfong)
    • add Robot Framework language server (#724, thanks @bollwyvl)
    • add a list of third-party and community language servers (#826, thanks @cccs-jc)
    • fix documentation of .lsp_symlink workaround ([#828])
  • maintenance:
    • bump minimum required JupyterLab version to 3.3 (>=3.3.0,<4.0.0a0)
    • bump minimum required Node.js version to 14.0 (12.0 reached EOL in April)
    • use newer @jupyterlab/builder which provides third-party license information (#882)

lsp-ws-connection 0.7.1 (2023-03-15)

  • downstreams:
    • includes sourcemaps for easier debugging (#882)
  • maintenance:
    • handle notification promises more explicitly (#882)

jupyter-lsp 2.0.0 (2023-03-15)

  • dependencies:
    • uses importlib_metadata (or importlib.metadata on 3.10+) for entry_points (#882)
    • supports Python versions are 3.8 or newer
  • performance:
    • entry_point discovery is deferred until server has started, improving jupyter_server startup time (#852)
  • allow to pass default workspace config (serverSettings) in specs (#856)

@krassowski/jupyterlab-lsp 3.10.1 (2022-03-21)

  • bug fixes:
    • fix navigation to files with names including characters which require encoding (#758)
    • fix omissions in the main settings schema for correct rendering in JupyterLab 3.3 Settings Editor UI (#779)
  • maintenance
    • make tests pass with new JupyterLab 3.3 (#777)
    • pin r-base version to fix Binder (#766)
    • pin node-gyp to fix CI on Windows (#772)
    • pin pytest-flake8 to fix CI
    • update development/testing environment dependencies: urijs, typedoc, url-parse

@krassowski/jupyterlab-lsp 3.10.0 (2022-01-01)

  • features:
    • enable pre-filtering of completion matches by default (#735)
    • add support for diagnostic tags: Deprecated, Unnecessary (#736, #737)
  • bug fixes:
    • squash warnings and errors in web console (#732)
    • fix signature blur and fix formatting when no arguments are present (#734)
    • fixed with enabling of strict null checks:
      • previously changing kernels always led to restarting of LSP connection, even if the kernel language did not change; now the connection will be retained if possible
      • markdownRenderer is no longer implicitly required
      • diagnostics sorting with missing values for source and severity was improved and missing values will be consistently shown at the end
      • diagnostics placeholder was split into Diagnostics are not available and No issues detected, great job! which will now show up properly
  • maintenance:
    • enable strict null checks and other strict settings (#733)
    • specify client capabilities in features instead of hard-coding them (#738)
    • bump minimum required JupyterLab version to 3.1 (>=3.1.0,<4.0.0a0)

@krassowski/code-jumpers 1.2.0 (2022-01-01)

  • maintenance:
    • updates to API with respect to null/undefined values in course strict null checks activation (#733)

@krassowski/jupyterlab-lsp 3.9.3 (2021-12-19)

  • bug fixes:
    • workaround upstream issue in merging translation (#726, thanks @fcollonval)

@krassowski/jupyterlab-lsp 3.9.2 (2021-12-12)

  • bug fixes:
    • prevent very long completion details text from extending the completer indefinitely (#698)
    • correct status translations (#700, thanks @fcollonval)
    • fix translations in status pop-up (#703)
    • workaround issue causing file rename when opening external files by jumping to them (#712, thanks @jepcor97)
    • fix sorting by "Line:Ch" and "Cell" in Diagnostics Panel (#717)
    • fix header border missing when scrolling in Diagnostics Panel (#717)
  • documentation improvements:
    • clarify that JupyterLab restart is needed after installation (#714, thanks @3coins)

@krassowski/completion-theme 3.2.0 (2021-12-12)

  • features:
    • add details-below layout allowing to change the completer arrangement (#698)

jupyter-lsp 1.5.1 (2021-12-12)

  • documentation improvements:
    • document troubleshooting steps for texlab server(#702)
  • maintenance and upkeep:
    • migrate test configuration to ServerApp as needed (#713)
    • address deprecation warnings (#713)

@krassowski/jupyterlab-lsp 3.9.1 (2021-10-24)

  • bug fixes:
    • fix build issues making it difficult to reuse/extend the package (#696, thanks @cccs-jc)

jupyter-lsp 1.5.0 (2021-10-24):

  • features:
    • add support for new typescript-language-server replacing javascript-typescript-langserver; despite the name both packages provide support for all four: JavaScript, JSX, TypeScript and TSX; the old javascript-typescript-langserver can still be used, but it is no longer maintained and we will not be supported, and specs may be removed in the next major release (#697).

@krassowski/jupyterlab-lsp 3.9.0 (2021-10-17)

  • features:
    • signature help box will now persist while typing the arguments of a function (#671)
    • the currently active argument will be highlighted in the signature help box
    • if the documentation exceeds a user-configurable number of lines the signature help box will only display the first line of the documentation and the following lines will be collapsed into an expandable details section.
    • the signature box is now displayed above the current line
    • the signature box takes up less space
    • you can now disable specific features in settings (#689)
  • bug fixes:
    • fix missing translation strings (#675)
    • fix kernel completions not showing up for R (#686)
    • fix tab completions not showing up in strings due to incomplete trigger kind invalidation (#686)
    • fix path completions reconciliation for pyls/pylsp with IPython (#686)
    • improve escaping rule for IPython magics overrides (#688)
    • fix documentation panel not showing up when typing fast (#692)

@krassowski/jupyterlab-lsp 3.8.1 (2021-08-02)

  • bug fixes:
    • %Rdevice magic is now properly overridden and won't be extracted to R code (#646)
    • Fix hover rendering for MarkedStrings, fix hover disappearing when moving mouse towards it (#653)

jupyter-lsp 1.4.1 (2021-08-02)

  • bug fixes:
    • remove spurious ValidationError warnings for non-installed servers (#645, thanks @karlaspuldaro)
    • reduce number and verbosity of logs on startup

@krassowski/jupyterlab-lsp 3.8.0 (2021-07-04)

  • improvements:

    • add a note on manually enabling backend extension (#621, thanks @icankeep)
    • in-app troubleshooting/installation help is now offered for servers which are needed but could not be detected (if auto-detection specification for those is present) (#634)
  • bug fixes:

    • fix rename shortcut registration in file editor (#614)
    • improve performance of icon rendering in completer (#625)
    • fix cache misses and concurrency issues for hover (#630)

jupyter-lsp 1.4.0 (2021-07-04)

  • features:

    • troubleshoot property was added to the language server spec, allowing to describe auto-detection troubleshooting (#634)
    • new endpoint specs will list all language server specifications known to jupyter-lsp allowing frontends to suggest installation of specific language servers (#634)
  • changes:

    • ShellSpec.is_installed() signature changed; it now accepts the LanguageServerManagerAPI rather than the resolved command location (of str type); the specs using only is_installed_args are not affected; as this method was only used by internally by the __call__ implementation (which was adjusted accordingly) this change should not break existing specs unless any of these methods were overridden in sub-classes.
    • SpecBase was moved to types.py; it can still be imported from utils, but doing so is discouraged
    • ShellSpec.solve() was added to facilitate discovery of command location

jupyter-lsp 1.3.0 (2021-06-02)

  • features:
    • add auto-detection of pyright server (#587, thanks @yuntan)

@krassowski/jupyterlab-lsp 3.7.0 (2021-05-31)

  • features:

    • add ability to deactivate Kernel completions or LSP completion through the settings (#586, thanks @Carreau)
    • allow to set a priority for LSP server, allowing to choose which server to use when multiple servers are installed (#588)
    • add auto-detection of pyright server (#587, thanks @yuntan)
    • update from JupyterLab Classic to RetroLab (#602)
    • log server messages in user-accessible console (#606)
  • bug fixes:

    • workaround url-parse issue causing problems when using JupyterLab 3.0.15 (#599)
  • other changes:

    • drop Node 10 (EOL 2 weeks ago) testing on CI, add Node 15 (#587)
    • update lsp-ws-connection dependencies (#606)
    • old emit-based API of lsp-ws-connection is new deprecated and will be removed in the next major version; please use serverNotifications, clientNotifications, clientRequests and serverRequests instead (#606)

jupyter-lsp 1.2.0 (2021-04-26)

  • features:

    • add support for python-lsp-server, a community fork of pyls (#584 and #582, thanks @maresb)
  • bug fixes:

    • fix encoding on Windows for non-conda installs (#580, thanks @stonebig)

@krassowski/code-jumpers 1.1.0 (2021-04-26)

  • features:

    • added translation support (#557, thanks @JessicaBarh)

@krassowski/jupyterlab-lsp 3.6.0 (2021-04-26)

  • features:

    • added translation support (#557, thanks @JessicaBarh)
  • bug fixes:

    • fixed name of jupyterlab-lsp package displayed in JupyterLab UI (#570, thanks @marimeireles)
    • removed vendored CodeMirror from distribution (#576)

@krassowski/jupyterlab-lsp 3.5.0 (2021-03-22)

  • features:

    • adds %%bigquery IPython cell magic support for BigQuery (#553, thanks @julioyildo)
    • completions filtering can be set to case-insensitive in settings (#549)
    • completions filtering can hide exact matches (#549)
    • the extra information displayed next to the completion label now can include 'detail' (usually module/package of origin), and can be customized in settings (#549)
  • bug fixes:

    • prevents throwing a highlights error when adding new cell with <kbd>Shift</kbd> + <kbd>Enter</kbd> (#544)
    • fixes IPython pinfo and pinfo2 (? and ??) for identifiers containing s (#547)
    • fixes incorrect behaviour of LSP features in some IPython magics with single line of content (#560)
    • fixes name of jupyterlab-lsp package in JupyterLab
  • for extension authors:

    • minimal functional extractor and code overrides APIs are now exported; these APIs cab be subject to change in future releases (#562)

jupyter-lsp 1.1.4 (2021-02-21)

  • bug fixes:

    • ensures jupyter*_config.d paths are searched for language_servers as documented in Configuring (#535)
    • uses more explicit file name for enabling jupyter-lsp in notebook and `jupyter_server (#535)

@krassowski/jupyterlab-lsp 3.4.1 (2021-02-16)

  • bug fixes:

    • fixed installation of the source version of the extension (causing build error if classic was not installed) (#526)

@krassowski/jupyterlab-lsp 3.4.0 (2021-02-14)

  • features:

    • the priority of the completions from kernel can now be changed by switching new kernelCompletionsFirst setting (#520)
    • completer panel will now always render markdown documentation if available (#520)
      • the implementation re-renders the panel as it is the best we can do until jupyterlab#9663 is merged
    • the completer now uses filterText and sortText if available to better filter and sort completions (#520, #523)
    • completer suppressInvokeIn setting was removed; suppressContinuousHintingIn and suppressTriggerCharacterIn settings were added (#521)
    • suppressContinuousHintingIn by default includes def to improve the experience when writing function names (#521)
    • long file paths are now collapsed if composed of more than two segments to avoid status popover and diagnostics panel getting too wide (#524)
  • bug fixes:

    • user-invoked completion in strings works again (#521)
    • completer documentation will now consistently show up after filtering the completion items (#520)
    • completions containing HTML-like syntax will be displayed properly (an upstream issue) (#520, #523)
    • diagnostics panel will no longer break when foreign documents (e.g. %%R cell magics) are removed (#522)

@krassowski/jupyterlab-lsp 3.3.1 (2021-02-07)

  • bug fixes:

    • completion and signature suggestions get invalidated when editor changes (#507)
    • signature suggestions now invalidate on cursor move to another line or backwards too (#507)
    • LaTeX is now rendered in documentation panel of completer (#506)
    • completion response returned as plain text use pre tag to retain whitespace formatting (#506)
    • pre-formatted code font size was reduced to match font-size of the text in completion panel (#506)
    • completer no longer spans the entire screen if it has long entries (#506)

jupyter-lsp 1.1.3 (2020-02-07)

  • features:

    • add config for the classic notebook server extension (#504)

@krassowski/jupyterlab-lsp 3.3.0 (2021-01-31)

  • features:

    • added a timeout for kernel completion, with the default of 600ms (#496)
    • added an option to skip waiting for kernel completions if busy, off by default (#496)
  • bug fixes:

    • delayed completion suggestions will no longer show up if cursor moved to another line (#496)
    • changes in notebooks after kernel restart or file rename will now be recorded by the language server again (#496)
    • when either of kernel providers: kernel or LSP server fails, the completion from the other will still be shown (#496)

jupyter-lsp 1.1.2 (2021-01-31)

  • bug fixes:

    • fixed issues with language server messages being truncated in certain circumstances on Windows

@krassowski/jupyterlab-lsp 3.2.0 (2021-01-24)

  • features:

    • documentation panel in completer now works for R language too: implemented completionItem/resolve (#487)
    • kernel types returned by IPython and IJulia are now mapped to LSP types; you can customize the mappings in settings (#487)
  • bug fixes:

    • diagnostics panel works after kernel restart properly (#485)
    • workaround was added to enable jedi-language-server diagnostics (#485)
    • Julia language server will not crash when saving a non-Julia file: fixed sendSaved notification scope (#491)

jupyter-lsp 1.1.1 (2021-01-24)

  • bug fixes:

    • PythonModuleSpec no longer raises exception when the server module does not exist (#485)

@krassowski/jupyterlab-lsp 3.1.0 (2021-01-17)

  • features

    • make the extension work with jupyterlab-classic - experimental, not all features are functional yet (#465)
    • new status "Server extension missing" and a dialog with advice was added to help users with atypical configurations (#476)
    • for developers: the verbosity of console logs is now controllable from settings and set to warn by default (#480)
  • bug fixes:

    • namespace completions in R (after double and triple colon) now work properly (#449)
    • improved status icon contrast when status item is active (#465)
    • connection manager now properly keeps track of notebooks when multiple notebooks are open (#474)
    • new cells added after kernel restart now work properly; kernel changes are handled correctly (#478)
    • increase total timeout for language server connection (#479)
    • fix status communication during initialization (#479)

jupyter-lsp 1.1.0 (2021-01-17)

  • features

    • added experimental detection of Julia and Jedi language servers (#481)
  • bug fixes:

    • send periodic pings on websocket channels to maintain connection (#459, thanks @franckchen)
    • R languageserver is no longer incorrectly shown as available when not installed (#463)
    • fix completion of very large namespaces (e.g. in R's base or in JavaScript) due to truncated message relay (#477)

@krassowski/jupyterlab-lsp 3.0.0 (2021-01-06)

  • features

    • support for JupyterLab 3.0 (#452, #402)

jupyter-lsp 1.0.0 (2021-01-06)

  • features

    • support for JupyterLab 3.0 (#452, #402)

@krassowski/jupyterlab-lsp 2.1.2 (2021-01-02)

  • features

    • highlights can now be auto-removed from the cells/editors on blur (set removeOnBlur to true in settings) (#446)
  • bug fixes

    • improved performance of completion and highlights by minimising the number of highlight requests and GUI redraws (token checking, debouncing, acting on a single response only) (#433)
    • highlights now update after cell focus/blur events even if those do not trigger cursor movement (#433)
    • trigger characters auto-invoke now works in continuous hinting mode again (#434)

@krassowski/jupyterlab-lsp 2.1.1 (2020-12-15)

  • bug fixes

    • fix crash "blank screen" caused by Mac command character included in jump-to schema file (#429)

jupyter-lsp 0.9.3 (2020-12-13)

  • features

    • the virtual documents' folder can be configured with JP_LSP_VIRTUAL_DIR or LanguageServerManager.virtual_documents_dir, with a potential benefit for JupyterHub installations (the default value remains contents.rootdir_ / .virtual_documents) (#416, thanks @fcollonval)

@krassowski/jupyterlab-lsp 2.1.0 (2020-12-13)

  • features

    • added "click to jump" functionality (by default using <kbd>Alt</kbd> modifier) (#423)
    • added "jump back" command, by default activated with <kbd>Alt</kbd> + <kbd>o</kbd> (#423)
    • .virtual_documents location can now be customized (#416)
    • tokens are now exported making them available for import from other extensions (#414, thanks @martinRenou)
  • bug fixes

    • context menu commands are now correctly registered where previously specific conditions were leading to race conditions (#399, thanks @mnowacki-b)
    • handles characters that need escaping (spaces, non-ASCII characters) more robustly in files and folder names (#403, thanks @bollwyvl and @avaissi)
    • moving cells now triggers the document update immediately leading to immediate diagnostics update (#421)
    • changing cell type to raw or markdown and then back to code properly unbinds/binds event handlers and updates document (#421)
    • pasted cells are added to the LSP document immediately, without the need for the user to enter them (#421)
    • improved error message when language server cannot be found (#413, thanks @martinRenou)
    • developer documentation got improved (#412, thanks @karlaspuldaro)

@krassowski/code-jumpers 1.0.0 (2020-12-13)

  • breaking changes
    • split away from @krassowski/jupyterlab_go_to_definition, renamed to @krassowski/code-jumpers (#423):
      • removed unused code
      • refactored history operations to track files and always use global location data
    • renamed uri to contents_path to help avoid programmer issues with characters requiring URI encoding (#406)

@krassowski/jupyterlab-lsp 2.0.8 (2020-10-25)

  • bug fixes

    • custom cell syntax highlighting is now properly removed when no longer needed (#387)
    • the completer in continuous hinting now works well with the pasted text (#389)
    • continuous hinting suggestions will no longer show up if the only hint is the same as the current token (#391)
    • available options for hover modifier keys are now listed in the setting descriptions (#377)

@krassowski/jupyterlab-lsp 2.0.7 (2020-09-18)

  • bug fixes

    • fix syntax highlighting in hover tooltips and reduce unnecessary padding and margin (#363)
    • greatly improve performance of hover action (#363)
    • improve support for expanded hovers tooltips using deprecated API (#363)
    • do not hide hover tooltips too eagerly (allowing selecting text/easy scrolling of longer tooltips) (#363)

@krassowski/jupyterlab-lsp 2.0.6 (2020-09-15)

  • bug fixes

    • fix syntax highlighting of %%language cells slowing down editing in notebooks (#361)

@krassowski/jupyterlab-lsp 2.0.5 (2020-09-11)

  • bug fixes

    • fix too aggressive overrides of IPython's pinfo (?) and pinfo2 (??) (#352)

@krassowski/jupyterlab-lsp 2.0.4 (2020-09-11)

  • bug fixes

    • improve code overrides for IPython line magics (#346)
    • implement missing code overrides for IPython's pinfo (?) and pinfo2 (??) syntactic sugar (#346)

@krassowski/jupyterlab-lsp 2.0.2 (2020-09-07)

  • bug fixes

    • fix code overrides not being registered properly (#340)

@krassowski/jupyterlab-lsp 2.0.1 (2020-09-07)

  • bug fixes

    • bump version of lsp-ws-connection dependency to fix the LaTeX server issues (see #337)

jupyter-lsp 0.9.2 (2020-09-03)

  • autodetects the sql language server for .sql files (#328)
    • diagnostics are provided by sqlint which requires Node 11+ to work well (in contrast to currently required Node 10+).

@krassowski/jupyterlab-lsp 2.0.0 (2020-09-03)

  • features

    • support for JupyterLab 2.2 (#301)
    • completer now displays server-provided documentation, and a kernel icon for kernel suggestions without type information (#301)
    • add two icons themes for the completer (material and vscode) (#322)
    • the documentation by the completer can be turned on or off (#315)
    • continuous hinting (Hinterland mode) can be enabled in settings (#315)
    • tokens in which the completer should not be triggered can be changed (#315)
    • configuration for the following features is now exposed in the settings editor (#318):
      • diagnostics (display, filtering)
      • hover (modifier key)
    • rename operation status reporting got improved (#318)
    • replaced the generic status icons with code check icon (coloured differently according to the status) (#318)
    • added icons for all the features and their commands (#318)
    • refactored the codebase with a new architecture which allows dynamic features, document widget adapter, and code editor registration (#318)
    • the document in the connections list in the statusbar popover are now represented by easy-to-understand DocumentLocator (breadcrumbs) widget rather than an internal id (bacc006)
    • syntax highlighting mode is adjusted to the language with the majority of the code in an editor (#319)
    • copy diagnostics message and filter diagnostics from context menu of Diagnostic Panel (#330)
  • bug fixes

    • path-autocompletion issues were resolved upstream and this release adopts these changes
    • the missing caret and document connection icons were restored in the statusbar popover (#318)
    • pressing "Cancel" rename during rename now correctly aborts the rename operation (#318)
    • when a language server for a foreign document is not available an explanation is displayed (rather than the "Connecting..." status as before) (4e5b2ad)
    • when jump target is not found a message is now shown instead of raising an exception (00448d0)
    • fixed status message expiration and replacement (8798f2d), (#329)
    • fixed some context command rank issues introduced after an attempt of migration to nulls (#318)

@krassowski/jupyterlab-lsp 1.1.2 (2020-08-05)

  • bug fixes

    • emits console warnings instead of throwing errors in hover handlers and connections (#299, #300)
    • improve URL checks in message handling to enable LaTeX diagnostics to work when configured (#288)

jupyter-lsp 0.9.1 (2020-08-05)

  • autodetects the texlab language server for .tex files (#288)
    • diagnostics should be provided by chktex on save, but don't yet appear, but can be configured through the Advanced Settings Editor to appear on save or change

@krassowski/jupyterlab-lsp 1.1.0 (2020-07-20)

  • features

    • language servers can now be configured from the Advanced Settings Editor (#245)
  • bug fixes

    • fixes currently-highlighted token in dark editor themes against light lab theme (and vice versa) (#195)
    • restores sorting order-indicating caret icons in diagnostics panel table (#261)
    • handles document open and change operation ordering more predictably (#284)
    • fixes some pyflakes issues caused by line magics substitution (#293)
    • updated the link to the documentation of language servers (#294)

jupyter-lsp 0.9.0 (2020-07-20)

  • features

    • language servers can now be configured from the Advanced Settings Editor (#245)
  • bug fixes

    • handles document open and change operation ordering more predictably (#284)

lsp-ws-connection 0.5.0 (2020-07-20)

  • features

    • language servers can now be configured from the Advanced Settings Editor (#245)
  • bug fixes

    • handles document open and change operation ordering more predictably (#284)

@krassowski/jupyterlab-lsp 1.0.0 (2020-03-14)

  • features

    • supports JupyterLab 2.0

@krassowski/jupyterlab_go_to_definition 1.0.0 (2020-03-14)

  • features

    • supports JupyterLab 2.0

@krassowski/jupyterlab-lsp 0.8.0 (2020-03-12)

  • features

    • opens a maximum of one WebSocket per language server (#165, #199)
    • lazy-loads language server protocol machinery (#165)
    • waits much longer for slow-starting language servers (#165)
    • cleans up documents, handlers, events, and signals more aggressively (#165)
    • ignores malformed diagnostic ranges, enabling markdown support (#165)
    • passes tests on Python 3.8 on Windows (#165)
    • improves support for rpy2 magic cells with parameters ( #206 )
  • bug fixes

    • reports files are open only after installing all handlers to avoid missing messages (#201)

lsp-ws-connection 0.4.0 (2020-03-12)

  • breaking changes

    • no longer assumes one document per connection (#165)
    • requires documents be opened explicitly (#165)
    • use of the eventEmitter pattern mostly deprecated in favor of Promises (#165)

jupyter-lsp 0.8.0 (2020-03-12)

  • breaking changes

    • websockets are now serviced by implementation key, rather than language under lsp/ws/<server key> (#199)
    • introduces schema version 2, reporting status by server at lsp/status (#199)
  • bugfixes:

    • handles language server reading/writing and shadow file operations in threads (#199)

jupyter-lsp 0.7.0

  • bugfixes
    • didSave no longer causes unwanted messages in logs ( #187 )

@krassowski/jupyterlab-lsp 0.7.1

  • features

    • users can now choose which columns to display in the diagnostic panel, using a context menu action ( #159 )
    • start the diagnostics panel docked at the bottom and improve the re-spawning of the diagnostics panel ( #166 )
  • bugfixes

    • fixed various small bugs in the completer ( #162 )
    • fix documentation display in signature for LSP servers which return MarkupContent ( #164 )

lsp-ws-connection 0.3.1

  • added sendSaved() method (textDocument/didSave) ( #147 )
  • fixed getSignatureHelp() off-by-one error ( #140 )

@krassowski/jupyterlab-lsp 0.7.0

  • features

    • reduced space taken up by the statusbar indicator ( #106 )
    • implemented statusbar popover with connections statuses ( #106 )
    • generates types for server data responses from JSON schema ( #110 )
    • added 'rename' function for notebooks, using shadow filesystem ( #115 )
    • added a UX workaround for rope rename issues when there is a SyntaxError in the Python code ( #127 )
    • added a widget panel with diagnostics (inspections), allowing to sort and explore diagnostics, and to go to the respective location in code (with a click); accessible from the context menu ( #129 )
    • all commands are now accessible from the command palette ( #142 )
    • bash LSP now also covers %%bash magic cell in addition to %%sh ( #144 )
    • rpy2 magics received enhanced support for argument parsing in both parent Python document (re-written overrides) and exctracted R documents (improved foreign code extractor) ( #148, #153 )
    • console logs can now easily be redirected to a floating console windows for debugging of the browser tests (see CONTRIBUTING.md)
  • bugfixes

    • diagnostics in foreign documents are now correctly updated ( 133fd3d )
    • diagnostics are now always correctly displayed in the document they were intended for
    • the workaround for relative root path is now also applied on Mac ( #139 )
    • fixed LSP of R in Python (%%R magic cell from rpy2) ( #144 )
    • completion now work properly when the kernel is shut down ( #146 )
    • a lowercase completion option selected from an uppercase token will now correctly substitute the incomplete token ( #143 )
    • didSave() is emitted on file save, enabling the workaround used by R language server to lazily load library(tidyverse) ( #95, #147, )
    • signature feature is now correctly working in notebooks ( #140 )

lsp-ws-connection 0.3.0

  • infrastructure
    • brought into monorepo #107
  • dev
    • allows initializeParams to be overloaded by subclasses
    • adopts
      • typescript 3.7
      • prettier
      • tslint
    • added initialization checks before executing sendChange to comply with LSP specs #115

jupyter-lsp 0.7.0b0

  • features
    • adds a language server status endpoint ( #81 )
    • adds more descriptive information to the language server spec ( #90 )
    • adds an extensible listener API ( #99, #100 )

@krassowski/jupyterlab-lsp 0.6.1

  • features
    • adds an indicator to the statusbar
    • and many other improvements, see the release notes
  • dependencies
    • removes unused npm dependencies

@krassowski/jupyterlab-lsp 0.6.0

  • features
    • allows "rename" action in file editor
  • bugfixes
    • handles some non-standard diagnostic responses
  • testing
    • adds browser-based testing for file editor
  • dependencies
    • requires jupyter-lsp

jupyter-lsp 0.6.0b0

  • features

    • starts language servers on demand
    • accepts configuration via Jupyter config system (traitlets) and python entry_points
    • autodetects language servers for bash, CSS, LESS, SASS, Dockerfile, YAML, JS, TypeScript, JSX, TSX, JSON, YAML
  • bugfixes

    • fix issue that variables declared in cell magics(%%time, %%capture) are masked( #635 )