Skip to content

Running modes

There are three running modes: Command line, LSP4IJ and Native LSP client.

These modes all have their own pros and cons. While RyeCharm will try to maintain consistency where possible, a few features/settings are only available in one mode but not another.

The default mode is Command line. However, it is recommended to use either of the other two modes for performance and technical reasons:

  • Prefer the Native LSP client mode if available, especially if other language server plugins, bundled or third-party, are present. This will help avoiding class loading errors (see below).
  • Otherwise, prefer the LSP4IJ mode.

See Linting and Formatting for more information.

Command line mode#

In Command line mode, RyeCharm will invoke the provided executable to retrieve necessary information for linting, formatting and # noqa documentation popups.

This is in contrary to the language server modes, in which there is only one long-running process that handles these operations via the language server protocol (LSP).

For features not directly available via LSP, the executable will still be invoked. This is done to provide a consistent experience across all modes.

Native LSP client and LSP4IJ modes#

These two modes make use of Ruff's language server capabilities, available via the server subcommand.

The differences between them are that of the client libraries. To use the native client, you must be using a paid IDE or the unified PyCharm. On the other hand, LSP4IJ can be installed on any IDE.

Mode Native LSP client LSP4IJ
Client Built-in LSP4IJ (third-party)
Can be used on Paid IDEs, unified PyCharm All IDEs
Supported features* Few Much wider range
UI integration Better Good
API stability Stable Unstable

* Ruff's features are supported equally well by both.

Warning

On an IDE with both clients available, a LinkageError will be thrown if Native LSP client is selected. This is a known limitation.