diff --git a/packages/opencode/src/format/formatter.ts b/packages/opencode/src/format/formatter.ts index d2a9eee8..baa39906 100644 --- a/packages/opencode/src/format/formatter.ts +++ b/packages/opencode/src/format/formatter.ts @@ -177,6 +177,21 @@ export const ruff: Info = { }, } +export const uvformat: Info = { + name: "uv format", + command: ["uv", "format", "--", "$FILE"], + extensions: [".py", ".pyi"], + async enabled() { + if (await ruff.enabled()) return false + if (Bun.which("uv") !== null) { + const proc = Bun.spawn(["uv", "format", "--help"], { stderr: "pipe", stdout: "pipe" }) + const code = await proc.exited + return code === 0 + } + return false + }, +} + export const rubocop: Info = { name: "rubocop", command: ["rubocop", "--autocorrect", "$FILE"], diff --git a/packages/web/src/content/docs/formatters.mdx b/packages/web/src/content/docs/formatters.mdx index 8853ca33..4b46a4f6 100644 --- a/packages/web/src/content/docs/formatters.mdx +++ b/packages/web/src/content/docs/formatters.mdx @@ -21,6 +21,7 @@ OpenCode comes with several built-in formatters for popular languages and framew | clang-format | .c, .cpp, .h, .hpp, .ino, and [more](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` config file | | ktlint | .kt, .kts | `ktlint` command available | | ruff | .py, .pyi | `ruff` command available with config | +| uv | .py, .pyi | `uv` command available | | rubocop | .rb, .rake, .gemspec, .ru | `rubocop` command available | | standardrb | .rb, .rake, .gemspec, .ru | `standardrb` command available | | htmlbeautifier | .erb, .html.erb | `htmlbeautifier` command available |