mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-04 10:48:32 +00:00
ruff server
: Write a setup guide for Neovim (#10987)
## Summary A setup guide has been written for NeoVim under a new `crates/ruff_server/docs/setup` folder, where future setup guides will also go. This setup guide was adapted from the [`ruff-lsp` guide](https://github.com/astral-sh/ruff-lsp?tab=readme-ov-file#example-neovim). --------- Co-authored-by: Dhruv Manilawala <dhruvmanila@gmail.com>
This commit is contained in:
parent
4d8890eef5
commit
5da7299b32
2 changed files with 61 additions and 0 deletions
|
@ -5,6 +5,13 @@ listen for requests from the client, (in this case, the code editor of your choi
|
|||
crates to create real-time diagnostics or formatted code, which is then sent back to the client. It also tracks configuration
|
||||
files in your editor's workspace, and will refresh its in-memory configuration whenever those files are modified.
|
||||
|
||||
### Setup
|
||||
|
||||
We have specific setup instructions depending on your editor. If you don't see your editor on this list and would like a setup guide, please open an issue.
|
||||
|
||||
- Visual Studio Code: Install the [Ruff extension from the VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff). The language server used by the extension will be, by default, the one in your actively-installed `ruff` binary. If you don't have `ruff` installed and haven't provided a path to the extension, it comes with a bundled `ruff` version that it will use instead. Since the new Ruff language server has not yet been stabilized, you will need to use the pre-release version of the extension and enable the `Experimental Server` setting.
|
||||
- Neovim: See the [Neovim setup guide](docs/setup/NEOVIM.md).
|
||||
|
||||
### Contributing
|
||||
|
||||
If you're interested in contributing to `ruff server` - well, first of all, thank you! Second of all, you might find the [**contribution guide**](CONTRIBUTING.md) to be a useful resource. Finally, don't hesitate to reach out on our [**Discord**](https://discord.com/invite/astral-sh) if you have questions.
|
||||
|
|
54
crates/ruff_server/docs/setup/NEOVIM.md
Normal file
54
crates/ruff_server/docs/setup/NEOVIM.md
Normal file
|
@ -0,0 +1,54 @@
|
|||
## 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 = { '*' },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
Loading…
Add table
Add a link
Reference in a new issue