Skip to content

Features#

This section provides a detailed overview of the features provided by the Ruff Language Server.

Diagnostic Highlighting#

Provide diagnostics for your Python code in real-time.

Editing a file in Helix

Dynamic Configuration#

The server dynamically refreshes the diagnostics when a configuration file is changed in the workspace, whether it's a pyproject.toml, ruff.toml, or .ruff.toml file.

The server relies on the file watching capabilities of the editor to detect changes to these files. If an editor does not support file watching, the server will not be able to detect changes to the configuration file and thus will not refresh the diagnostics.

Editing a <code>pyproject.toml</code> configuration file in VS Code

Formatting#

Provide code formatting for your Python code. The server can format an entire document or a specific range of lines.

The VS Code extension provides the Ruff: Format Document command to format an entire document. In VS Code, the range formatting can be triggered by selecting a range of lines, right-clicking, and selecting Format Selection from the context menu.

Formatting a document in VS Code

Code Actions#

Code actions are context-sensitive suggestions that can help you fix issues in your code. They are usually triggered by a shortcut or by clicking a light bulb icon in the editor. The Ruff Language Server provides the following code actions:

  • Apply a quick fix for a diagnostic that has a fix available (e.g., removing an unused import).
  • Ignore a diagnostic with a # noqa comment.
  • Apply all quick fixes available in the document.
  • Organize imports in the document.

Applying a quick fix in Helix

You can even run these actions on-save. For example, to fix all issues and organize imports on save in VS Code, add the following to your settings.json:

{
  "[python]": {
    "editor.codeActionsOnSave": {
      "source.fixAll.ruff": "explicit",
      "source.organizeImports.ruff": "explicit"
    }
  }
}

Fix Safety#

Ruff's automatic fixes are labeled as "safe" and "unsafe". By default, the "Fix all" action will not apply unsafe fixes. However, unsafe fixes can be applied manually with the "Quick fix" action. Application of unsafe fixes when using "Fix all" can be enabled by setting unsafe-fixes = true in your Ruff configuration file.

See the Ruff fix documentation for more details on how fix safety works.

Hover#

The server can provide the rule documentation when focusing over a NoQA code in the comment. Focusing is usually hovering with a mouse, but can also be triggered with a shortcut.

Hovering over a noqa code in VS Code

Jupyter Notebook#

Similar to Ruff's CLI, the Ruff Language Server fully supports Jupyter Notebook files with all the capabilities available to Python files.

Note

Unlike ruff-lsp and similar to the Ruff's CLI, the native language server requires user to explicitly include the Jupyter Notebook files in the set of files to lint and format. Refer to the Jupyter Notebook discovery section on how to do this.

Editing multiple Jupyter Notebook cells in VS Code

Formatting a selection within a Jupyter Notebook cell in VS Code