From 5db0813da644d6c3b4af94b0981390f233dccecd Mon Sep 17 00:00:00 2001 From: Gore Williams Date: Mon, 2 Mar 2026 13:10:04 +0200 Subject: [PATCH] feat(ruff): add ruff plugin --- plugins/ruff/README.md | 23 +++++++++++++++++++++++ plugins/ruff/ruff.plugin.zsh | 24 ++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 plugins/ruff/README.md create mode 100644 plugins/ruff/ruff.plugin.zsh diff --git a/plugins/ruff/README.md b/plugins/ruff/README.md new file mode 100644 index 000000000..45181a5fb --- /dev/null +++ b/plugins/ruff/README.md @@ -0,0 +1,23 @@ +# ruff plugin + +This plugin automatically installs [ruff](https://github.com/astral-sh/ruff)'s completions for you, +and keeps them up to date. It also adds convenient aliases for common usage. + +To use it, add `ruff` to the plugins array in your zshrc file: + +```zsh +plugins=(... ruff) +``` + +## Aliases + +| Alias | Command | Description | +| :---- | -------------------- | :----------------------------------------------------------- | +| ruc | `ruff check` | Run Ruff linter on the given files or directories | +| rucf | `ruff check --fix` | Run Ruff linter and fix auto-fixable issues | +| ruf | `ruff format` | Run the Ruff formatter on the given files or directories | +| rufc | `ruff format --check`| Check if files are already formatted without making changes | +| rur | `ruff rule` | Explain a rule (or all rules) | +| rul | `ruff linter` | List all supported upstream linters | +| rucl | `ruff clean` | Clear any caches in the current directory and subdirectories | +| ruup | `ruff self update` | Update Ruff to the latest version | diff --git a/plugins/ruff/ruff.plugin.zsh b/plugins/ruff/ruff.plugin.zsh new file mode 100644 index 000000000..fa671caa3 --- /dev/null +++ b/plugins/ruff/ruff.plugin.zsh @@ -0,0 +1,24 @@ +# Return immediately if ruff is not found +if (( ! ${+commands[ruff]} )); then + return +fi + +alias ruc='ruff check' +alias rucf='ruff check --fix' +alias ruf='ruff format' +alias rufc='ruff format --check' +alias rur='ruff rule' +alias rul='ruff linter' +alias rucl='ruff clean' +alias ruup='ruff self update' + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_ruff" ]]; then + typeset -g -A _comps + autoload -Uz _ruff + _comps[ruff]=_ruff +fi + +# Overwrites the file each time as completions might change with ruff versions. +ruff generate-shell-completion zsh >| "$ZSH_CACHE_DIR/completions/_ruff" &|