
## 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`
2.6 KiB
Migrating from ruff-lsp
While ruff server
supports the same feature set as ruff-lsp
, migrating to
ruff server
may require changes to your Ruff or language server configuration.
!!! note
The VS Code extension 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
configurationPreference
exclude
format.preview
lineLength
lint.select
lint.extendSelect
lint.ignore
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:
{
"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:
{
"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:
[language-server.ruff.config.lint]
args = "--select=E,F --line-length 80 --config ~/.config/custom_ruff_config.toml"
These can be migrated like so:
[language-server.ruff.config]
configuration = "~/.config/custom_ruff_config.toml"
lineLength = 80
[language-server.ruff.config.lint]
select = ["E", "F"]