coc-ruff
coc-ruff copied to clipboard
ruff-lsp (ruff) extension for coc.nvim
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
}
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.enableExperimentalFormattertotrue. - 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.providertonone.
- 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:trueruff.disableDocumentFormatting: Disable document formatting only, default:falseruff.disableHover: Disable hover only, default:falseruff.useDetectRuffCommand: Automatically detects the ruff command in the execution environment and setsruff.path, default:trueruff.autoFixOnSave: Turns auto fix on save on or off, default:falseruff.client.codeAction.showDocumantaion.enable: Whether to display the code action for open the Ruff rule documentation web page included in the diagnostic information, default:falseruff.serverPath: Custom path to theruff-lspcommand. If not set, theruff-lspcommand 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.showOutput: Show ruff output channelruff.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