Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve migration document #16072

Merged
merged 1 commit into from
Feb 10, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 29 additions & 14 deletions docs/editors/migration.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,49 @@
# Migrating from `ruff-lsp`

While `ruff server` supports the same feature set as [`ruff-lsp`](https://github.com/astral-sh/ruff-lsp), migrating to
`ruff server` may require changes to your Ruff or language server configuration.
To provide some context, [`ruff-lsp`](https://github.com/astral-sh/ruff-lsp) is the LSP implementation for Ruff to power the editor
integrations which is written in Python and is a separate package from Ruff itself. The **native
server** is the LSP implementation which is written in Rust and is available under the `ruff server`
command. This guide is intended to help users migrate from
[`ruff-lsp`](https://github.com/astral-sh/ruff-lsp) to the native server.

!!! note

The [VS Code extension](https://github.com/astral-sh/ruff-vscode) settings include documentation to indicate which
settings are supported by `ruff server`. As such, this migration guide is primarily targeted at editors that lack
explicit documentation for `ruff server` settings, such as Helix or Neovim.
The native server was first introduced in Ruff version `0.3.5`. It was marked as beta in version
`0.4.5` and officially stabilized in version `0.5.3`. It is recommended to use the latest
version of Ruff to ensure the best experience.

Refer to the [setup guide](setup.md) for instructions on how to configure your editor to use `ruff server`.
The migration process involves any or all of the following:

1. Migrate [deprecated settings](#unsupported-settings) to the [new settings](#new-settings)
1. [Remove settings](#removed-settings) that are no longer supported
1. Update the `ruff` version

## Unsupported Settings

Several `ruff-lsp` settings are not supported by `ruff server`. These are, as follows:
The following [`ruff-lsp`](https://github.com/astral-sh/ruff-lsp) settings are not supported by `ruff server`:

- `lint.run`: This setting is no longer relevant for the native language server, which runs on every
keystroke by default
keystroke by default.
- `lint.args`, `format.args`: These settings have been replaced by more granular settings in `ruff server` like [`lint.select`](settings.md#select), [`format.preview`](settings.md#format_preview),
etc. along with the ability to provide a default configuration file using
[`configuration`](settings.md#configuration)
- [`path`](settings.md#path), [`interpreter`](settings.md#interpreter): These settings are no longer
accepted by the language server but are still used by the VS Code extension. Refer to their
respective documentation for more information on how it's being used by the extension.
etc. along with the ability to provide a default configuration file using [`configuration`](settings.md#configuration).

The following settings are not accepted by the language server but are still used by the VS Code
extension. Refer to their respective documentation for more information on how it's being used by
the extension:

- [`path`](settings.md#path)
- [`interpreter`](settings.md#interpreter)

## Removed Settings

Additionally, the following settings are not supported by the native server, they should be removed:

- `ignoreStandardLibrary`
- `showNotifications`

## New Settings

`ruff server` introduces several new settings that `ruff-lsp` does not have. These are, as follows:
`ruff server` introduces several new settings that [`ruff-lsp`](https://github.com/astral-sh/ruff-lsp) does not have. These are, as follows:

- [`configuration`](settings.md#configuration)
- [`configurationPreference`](settings.md#configurationpreference)
Expand Down