mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-29 13:25:17 +00:00

## Summary Fixes #11911. `shellexpand` is now used on `logFile` to expand the file path, allowing the usage of `~` and environment variables. ## Test Plan 1. Set `logFile` in either Neovim or Helix to a file path that needs expansion, like `~/.config/helix/ruff_logs.txt`. 2. Ensure that `RUFF_TRACE` is set to `messages` or `verbose` 3. Open a Python file in Neovim/Helix 4. Confirm that a file at the path specified was created, with the expected logs.
94 lines
2.3 KiB
Markdown
94 lines
2.3 KiB
Markdown
## Neovim Setup Guide for `ruff server`
|
|
|
|
### Using `nvim-lspconfig`
|
|
|
|
1. Install [`nvim-lspconfig`](https://github.com/neovim/nvim-lspconfig).
|
|
1. Setup `nvim-lspconfig` with the [suggested configuration](https://github.com/neovim/nvim-lspconfig/tree/master#suggested-configuration).
|
|
1. Finally, add this to your `init.lua`:
|
|
|
|
```lua
|
|
require('lspconfig').ruff.setup {}
|
|
```
|
|
|
|
See [`nvim-lspconfig`'s server configuration guide](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#ruff) for more details
|
|
on how to configure the server from there.
|
|
|
|
> \[!IMPORTANT\]
|
|
>
|
|
> If you have the older language server (`ruff-lsp`) configured in Neovim, make sure to disable it to prevent any conflicts.
|
|
|
|
#### Tips
|
|
|
|
If you're using Ruff alongside another LSP (like Pyright), you may want to defer to that LSP for certain capabilities,
|
|
like `textDocument/hover`:
|
|
|
|
```lua
|
|
local on_attach = function(client, bufnr)
|
|
if client.name == 'ruff' then
|
|
-- Disable hover in favor of Pyright
|
|
client.server_capabilities.hoverProvider = false
|
|
end
|
|
end
|
|
|
|
require('lspconfig').ruff.setup {
|
|
on_attach = on_attach,
|
|
}
|
|
```
|
|
|
|
If you'd like to use Ruff exclusively for linting, formatting, and import organization, you can disable those
|
|
capabilities for Pyright:
|
|
|
|
```lua
|
|
require('lspconfig').pyright.setup {
|
|
settings = {
|
|
pyright = {
|
|
-- Using Ruff's import organizer
|
|
disableOrganizeImports = true,
|
|
},
|
|
python = {
|
|
analysis = {
|
|
-- Ignore all files for analysis to exclusively use Ruff for linting
|
|
ignore = { '*' },
|
|
},
|
|
},
|
|
},
|
|
}
|
|
```
|
|
|
|
By default, Ruff will not show any logs. To enable logging in Neovim, you'll need to set the `RUFF_TRACE` environment variable
|
|
to either `messages` or `verbose`:
|
|
|
|
```lua
|
|
require('lspconfig').ruff.setup {
|
|
cmd_env = { RUFF_TRACE = "messages" }
|
|
}
|
|
```
|
|
|
|
You can set the log level in `settings`:
|
|
|
|
```lua
|
|
require('lspconfig').ruff.setup {
|
|
cmd_env = { RUFF_TRACE = "messages" },
|
|
init_options = {
|
|
settings = {
|
|
logLevel = "debug",
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
It's also possible to divert Ruff's logs to a separate file with the `logFile` setting:
|
|
|
|
```lua
|
|
require('lspconfig').ruff.setup {
|
|
cmd_env = { RUFF_TRACE = "messages" },
|
|
init_options = {
|
|
settings = {
|
|
logLevel = "debug",
|
|
logFile = "~/.local/state/nvim/ruff.log"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
The `logFile` path supports tildes and environment variables.
|