From c4ef54626e115bcec5a5f9d7210e76987458d7c9 Mon Sep 17 00:00:00 2001 From: Sahitya Chandra Date: Sun, 15 Mar 2026 21:30:34 +0530 Subject: [PATCH] feat(formatters): add support for elm-format, stylua, and nimpretty formatters --- packages/opencode/src/format/formatter.ts | 27 ++++++++++++++++++++ packages/web/src/content/docs/formatters.mdx | 3 +++ 2 files changed, 30 insertions(+) diff --git a/packages/opencode/src/format/formatter.ts b/packages/opencode/src/format/formatter.ts index 9e96b2305cd..712b35f8d90 100644 --- a/packages/opencode/src/format/formatter.ts +++ b/packages/opencode/src/format/formatter.ts @@ -394,3 +394,30 @@ export const dfmt: Info = { return which("dfmt") !== null }, } + +export const stylua: Info = { + name: "stylua", + command: ["stylua", "$FILE"], + extensions: [".lua"], + async enabled() { + return which("stylua") !== null + }, +} + +export const nimpretty: Info = { + name: "nimpretty", + command: ["nimpretty", "-w", "$FILE"], + extensions: [".nim"], + async enabled() { + return which("nimpretty") !== null + }, +} + +export const elmformat: Info = { + name: "elm-format", + command: ["elm-format", "--yes", "$FILE"], + extensions: [".elm"], + async enabled() { + return which("elm-format") !== null + }, +} diff --git a/packages/web/src/content/docs/formatters.mdx b/packages/web/src/content/docs/formatters.mdx index dbee49dca6f..d64eccbcdcd 100644 --- a/packages/web/src/content/docs/formatters.mdx +++ b/packages/web/src/content/docs/formatters.mdx @@ -20,11 +20,13 @@ OpenCode comes with several built-in formatters for popular languages and framew | cljfmt | .clj, .cljs, .cljc, .edn | `cljfmt` command available | | dart | .dart | `dart` command available | | dfmt | .d | `dfmt` command available | +| elm-format | .elm | `elm-format` command available | | gleam | .gleam | `gleam` command available | | gofmt | .go | `gofmt` command available | | htmlbeautifier | .erb, .html.erb | `htmlbeautifier` command available | | ktlint | .kt, .kts | `ktlint` command available | | mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | `mix` command available | +| nimpretty | .nim | `nimpretty` command available | | nixfmt | .nix | `nixfmt` command available | | ocamlformat | .ml, .mli | `ocamlformat` command available and `.ocamlformat` config file | | ormolu | .hs | `ormolu` command available | @@ -36,6 +38,7 @@ OpenCode comes with several built-in formatters for popular languages and framew | rustfmt | .rs | `rustfmt` command available | | shfmt | .sh, .bash | `shfmt` command available | | standardrb | .rb, .rake, .gemspec, .ru | `standardrb` command available | +| stylua | .lua | `stylua` command available | | terraform | .tf, .tfvars | `terraform` command available | | uv | .py, .pyi | `uv` command available | | zig | .zig, .zon | `zig` command available |