summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/opencode/src/config/config.ts53
-rw-r--r--packages/opencode/src/format/index.ts8
-rw-r--r--packages/opencode/src/lsp/index.ts13
-rw-r--r--packages/sdk/js/src/gen/types.gen.ts50
4 files changed, 77 insertions, 47 deletions
diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts
index d9c453038..c40a910e0 100644
--- a/packages/opencode/src/config/config.ts
+++ b/packages/opencode/src/config/config.ts
@@ -542,36 +542,43 @@ export namespace Config {
.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(),
- command: z.array(z.string()).optional(),
- environment: z.record(z.string(), z.string()).optional(),
- extensions: z.array(z.string()).optional(),
- }),
- )
- .optional(),
- lsp: z
- .record(
- z.string(),
- z.union([
+ .union([
+ z.literal(false),
+ z.record(
+ z.string(),
z.object({
- disabled: z.literal(true),
- }),
- z.object({
- command: z.array(z.string()),
- extensions: z.array(z.string()).optional(),
disabled: z.boolean().optional(),
- env: z.record(z.string(), z.string()).optional(),
- initialization: z.record(z.string(), z.any()).optional(),
+ command: z.array(z.string()).optional(),
+ environment: z.record(z.string(), z.string()).optional(),
+ extensions: z.array(z.string()).optional(),
}),
- ]),
- )
+ ),
+ ])
+ .optional(),
+ lsp: z
+ .union([
+ z.literal(false),
+ z.record(
+ z.string(),
+ z.union([
+ z.object({
+ disabled: z.literal(true),
+ }),
+ z.object({
+ command: z.array(z.string()),
+ extensions: z.array(z.string()).optional(),
+ disabled: z.boolean().optional(),
+ env: z.record(z.string(), z.string()).optional(),
+ initialization: z.record(z.string(), z.any()).optional(),
+ }),
+ ]),
+ ),
+ ])
.optional()
.refine(
(data) => {
if (!data) return true
+ if (typeof data === "boolean") return true
const serverIds = new Set(Object.values(LSPServer).map((s) => s.id))
return Object.entries(data).every(([id, config]) => {
diff --git a/packages/opencode/src/format/index.ts b/packages/opencode/src/format/index.ts
index 9cb4545b0..bab758030 100644
--- a/packages/opencode/src/format/index.ts
+++ b/packages/opencode/src/format/index.ts
@@ -28,6 +28,14 @@ export namespace Format {
const cfg = await Config.get()
const formatters: Record<string, Formatter.Info> = {}
+ if (cfg.formatter === false) {
+ log.info("all formatters are disabled")
+ return {
+ enabled,
+ formatters,
+ }
+ }
+
for (const item of Object.values(Formatter)) {
formatters[item.name] = item
}
diff --git a/packages/opencode/src/lsp/index.ts b/packages/opencode/src/lsp/index.ts
index 6b5379742..6c082d0d7 100644
--- a/packages/opencode/src/lsp/index.ts
+++ b/packages/opencode/src/lsp/index.ts
@@ -62,10 +62,21 @@ export namespace LSP {
async () => {
const clients: LSPClient.Info[] = []
const servers: Record<string, LSPServer.Info> = {}
+ const cfg = await Config.get()
+
+ if (cfg.lsp === false) {
+ log.info("all LSPs are disabled")
+ return {
+ broken: new Set<string>(),
+ servers,
+ clients,
+ spawning: new Map<string, Promise<LSPClient.Info | undefined>>(),
+ }
+ }
+
for (const server of Object.values(LSPServer)) {
servers[server.id] = server
}
- const cfg = await Config.get()
for (const [name, item] of Object.entries(cfg.lsp ?? {})) {
const existing = servers[name]
if (item.disabled) {
diff --git a/packages/sdk/js/src/gen/types.gen.ts b/packages/sdk/js/src/gen/types.gen.ts
index c63081f82..d9414d393 100644
--- a/packages/sdk/js/src/gen/types.gen.ts
+++ b/packages/sdk/js/src/gen/types.gen.ts
@@ -1117,33 +1117,37 @@ export type Config = {
mcp?: {
[key: string]: McpLocalConfig | McpRemoteConfig
}
- formatter?: {
- [key: string]: {
- disabled?: boolean
- command?: Array<string>
- environment?: {
- [key: string]: string
- }
- extensions?: Array<string>
- }
- }
- lsp?: {
- [key: string]:
- | {
- disabled: true
- }
- | {
- command: Array<string>
- extensions?: Array<string>
+ formatter?:
+ | false
+ | {
+ [key: string]: {
disabled?: boolean
- env?: {
+ command?: Array<string>
+ environment?: {
[key: string]: string
}
- initialization?: {
- [key: string]: unknown
- }
+ extensions?: Array<string>
}
- }
+ }
+ lsp?:
+ | false
+ | {
+ [key: string]:
+ | {
+ disabled: true
+ }
+ | {
+ command: Array<string>
+ extensions?: Array<string>
+ disabled?: boolean
+ env?: {
+ [key: string]: string
+ }
+ initialization?: {
+ [key: string]: unknown
+ }
+ }
+ }
/**
* Additional instruction files or patterns to include
*/