@yaegassy/coc-ruff
v0.7.8
Published
ruff-lsp extension for coc.nvim
Downloads
1,063
Maintainers
Readme
coc-ruff
ruff-lsp extension for coc.nvim.
Install
CocInstall:
:CocInstall @yaegassy/coc-ruff
scoped packages
e.g. vim-plug:
Plug 'yaegassy/coc-ruff', {'do': 'yarn install --frozen-lockfile'}
Note
Detecting the "ruff" command from the execution environment
The ruff
command used by ruff-lsp
uses the ruff
command installed with the ruff-lsp
dependency.
To use the ruff
command installed in the virtual environment of a project created by venv
, poetry
, etc., ruff.path
must be set to an absolute path.
coc-ruff adds the feature to automatically detect ruff commands in the execution environment and use them in ruff-lsp
.
If you do not need this feature, set ruff.useDetectRuffCommand
to false
.
coc-settings.json:
{
"ruff.useDetectRuffCommand": false
}
[EXPERIMENTAL] Enabling the Rust-based language server
To use the new Rust-based language server (ruff server), you'll need to enable the ruff.nativeServer
setting in the coc-settings.json:
{
"ruff.nativeServer": true
}
In coc-ruff, the ruff binary is detected from the runtime environment (PATH) by default to start the native server. If you want to specify a custom ruff binary path, please set ruff.nativeBinaryPath.
{
"ruff.nativeBinaryPath": "/path/to/ruff"
}
Format (DocumentFormatting)
The black equivalent formatting feature has been added to ruff
. This feature is enabled by default in ruff-lsp
"v0.0.42" and later.
If you want to disable this feature, set the ruff.disableDocumentFormatting
setting to true
.
coc-settings.json:
{
"ruff.disableDocumentFormatting": true
}
If you are using ruff-lsp
"v0.4.1" or earlier and want to use this feature, please follow these steps.
- Please set
ruff.enableExperimentalFormatter
totrue
. - If you are using other Python-related coc-extensions alongside
coc-ruff
, please disable the formatting feature of those coc-extensions.- e.g.
coc-pyright
:- Please set
python.formatting.provider
tonone
.
- Please set
- e.g.
coc-settings.json:
{
"ruff.enableExperimentalFormatter": true,
"python.formatting.provider": "none"
}
Auto-fixing
Auto-fixing can be executed via the ruff.executeAutofix
command or CodeAction.
Set ruff.autoFixOnSave
setting to true
if you also want auto-fixing to be performed when the file is saved.
coc-settings.json:
{
"ruff.autoFixOnSave": true
}
Order of detection of ruff-lsp used by extensions
coc-ruff detects and starts ruff-lsp
in the following priority order.
ruff.serverPath
(If there is a setting)- current python3/python environment (e.g. ruff-lsp in global or virtual environment)
- built-in ruff-lsp (Installation commands are also provided)
Bult-in install
coc-ruff allows you to create an extension-only "venv" and install ruff-lsp
.
When using coc-ruff for the first time, if ruff-lsp
is not present in the runtime environment, you will be prompted to do a built-in install.
To use the built-in installation feature, execute the following command.
:CocCommand ruff.builtin.installServer
Configuration options
ruff.enable
: Enable coc-ruff extension, default:true
ruff.nativeServer
: Use the integrated Rust-based language server, available now in Beta, default:false
ruff.nativeBinaryPath
: Custom path for theruff
binary when using the native server. If no value is set, theruff
command will be detected from the runtime environment, default:""
ruff.disableDocumentFormatting
: Disable document formatting only, default:false
ruff.disableHover
: Disable hover only, default:false
ruff.useDetectRuffCommand
: Automatically detects the ruff command in the execution environment and setsruff.path
, default:true
ruff.autoFixOnSave
: Turns auto fix on save on or off, default:false
ruff.client.codeAction.showDocumantaion.enable
: Whether to display the code action for open the Ruff rule documentation web page included in the diagnostic information, default:false
ruff.serverPath
: Custom path to theruff-lsp
command. If not set, theruff-lsp
command found in the current Python environment or in the venv environment created for the extension will be used, default:""
ruff.builtin.pythonPath
: Python 3.x path (Absolute path) to be used for built-in install, default:""
ruff.trace.server
: Traces the communication between coc.nvim and the ruff-lsp, default:"off"
Other settings have the same configuration as ruff-vscode.
Commands
ruff.executeAutofix
: Fix all auto-fixable problemsruff.executeFormat
: Format documentruff.executeOrganizeImports
: Format importsruff.debugInformation
: Print debug information (native server only)ruff.showLogs
: Show logsruff.restart
: Restart Serverruff.builtin.installServer
: Install ruff-lsp- It will be installed in this path:
- Mac/Linux:
~/.config/coc/extensions/@yaegassy/coc-ruff-data/ruff-lsp/venv/bin/ruff-lsp
- Windows:
~\AppData\Local\coc\extensions\@yaegassy\coc-ruff-data\ruff-lsp\venv\Scripts\ruff-lsp.exe
- Mac/Linux:
- It will be installed in this path:
Thanks
License
MIT
This extension is built with create-coc-extension