mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-14 23:51:03 +00:00

## Summary This PR adds documentation for the Ruff language server. It mainly does the following: 1. Combines various READMEs containing instructions for different editor setup in their respective section on the online docs 2. Provide an enumerated list of server settings. Additionally, it also provides a section for VS Code specific options. 3. Adds a "Features" section which enumerates all the current capabilities of the native server For (2), the settings documentation is done manually but a future improvement (easier after `ruff-lsp` is deprecated) is to move the docs in to Rust struct and generate the documentation from the code itself. And, the VS Code extension specific options can be generated by diffing against the `package.json` in `ruff-vscode` repository. ### Structure 1. Setup: This section contains the configuration for setting up the language server for different editors 2. Features: This section contains a list of capabilities provided by the server along with short GIF to showcase it 3. Settings: This section contains an enumerated list of settings in a similar format to the one for the linter / formatter 4. Migrating from `ruff-lsp` > [!NOTE] > > The settings page is manually written but could possibly be auto-generated via a macro similar to `OptionsMetadata` on the `ClientSettings` struct resolves: #11217 ## Test Plan Generate and open the documentation locally using: 1. `python scripts/generate_mkdocs.py` 2. `mkdocs serve -f mkdocs.insiders.yml`
81 lines
2.6 KiB
Markdown
81 lines
2.6 KiB
Markdown
# 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.
|
|
|
|
!!! 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.
|
|
|
|
## Unsupported Settings
|
|
|
|
Several `ruff-lsp` settings are not supported by `ruff server`. These are, as follows:
|
|
|
|
- `format.args`
|
|
- `ignoreStandardLibrary`
|
|
- `interpreter`
|
|
- `lint.args`
|
|
- `lint.run`
|
|
- `path`
|
|
|
|
!!! note
|
|
Some of these settings, like `interpreter` and `path`, are still accepted by the VS Code
|
|
extension. `path`, in particular, can be used to specify a dedicated binary to use when
|
|
initializing `ruff server`. But the language server itself will no longer accept such settings.
|
|
|
|
## New Settings
|
|
|
|
`ruff server` introduces several new settings that `ruff-lsp` does not have. These are, as follows:
|
|
|
|
- [`configuration`](settings.md#configuration)
|
|
- [`configurationPreference`](settings.md#configurationpreference)
|
|
- [`exclude`](settings.md#exclude)
|
|
- [`format.preview`](settings.md#format_preview)
|
|
- [`lineLength`](settings.md#linelength)
|
|
- [`lint.select`](settings.md#select)
|
|
- [`lint.extendSelect`](settings.md#extendselect)
|
|
- [`lint.ignore`](settings.md#ignore)
|
|
- [`lint.preview`](settings.md#lint_preview)
|
|
|
|
Several of these new settings are replacements for the now-unsupported `format.args` and `lint.args`. For example, if
|
|
you've been passing `--select=<RULES>` to `lint.args`, you can migrate to the new server by using `lint.select` with a
|
|
value of `["<RULES>"]`.
|
|
|
|
## Examples
|
|
|
|
Let's say you have these settings in VS Code:
|
|
|
|
```json
|
|
{
|
|
"ruff.lint.args": "--select=E,F --line-length 80 --config ~/.config/custom_ruff_config.toml"
|
|
}
|
|
```
|
|
|
|
After enabling the native server, you can migrate your settings like so:
|
|
|
|
```json
|
|
{
|
|
"ruff.configuration": "~/.config/custom_ruff_config.toml",
|
|
"ruff.lineLength": 80,
|
|
"ruff.lint.select": ["E", "F"]
|
|
}
|
|
```
|
|
|
|
Similarly, let's say you have these settings in Helix:
|
|
|
|
```toml
|
|
[language-server.ruff.config.lint]
|
|
args = "--select=E,F --line-length 80 --config ~/.config/custom_ruff_config.toml"
|
|
```
|
|
|
|
These can be migrated like so:
|
|
|
|
```toml
|
|
[language-server.ruff.config]
|
|
configuration = "~/.config/custom_ruff_config.toml"
|
|
lineLength = 80
|
|
|
|
[language-server.ruff.config.lint]
|
|
select = ["E", "F"]
|
|
```
|