diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index ba7707dc..3901bb16 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -278,6 +278,14 @@ export namespace Config { .optional() .describe("Custom provider configurations and model overrides"), mcp: z.record(z.string(), Mcp).optional().describe("MCP (Model Context Protocol) server configurations"), + formatter: z + .record( + z.string(), + z.object({ + disabled: z.boolean().optional(), + }), + ) + .optional(), instructions: z.array(z.string()).optional().describe("Additional instruction files or patterns to include"), layout: Layout.optional().describe("@deprecated Always uses stretch layout."), permission: z diff --git a/packages/opencode/src/format/index.ts b/packages/opencode/src/format/index.ts index 754b75d4..30d464a3 100644 --- a/packages/opencode/src/format/index.ts +++ b/packages/opencode/src/format/index.ts @@ -5,6 +5,7 @@ import { Log } from "../util/log" import path from "path" import * as Formatter from "./formatter" +import { Config } from "../config/config" export namespace Format { const log = Log.create({ service: "format" }) @@ -28,9 +29,11 @@ export namespace Format { } async function getFormatter(ext: string) { + const cfg = await Config.get() const result = [] for (const item of Object.values(Formatter)) { if (!item.extensions.includes(ext)) continue + if (cfg.formatter?.[item.name]?.disabled) continue if (!(await isEnabled(item))) continue result.push(item) }