summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAbigailJixiangyuyu <[email protected]>2026-03-17 06:11:02 +0800
committerGitHub <[email protected]>2026-03-17 08:11:02 +1000
commite9a17e4480c8295ae3f72d4ea68c55ae07bfdc41 (patch)
tree8e2f3c66a67570f35e07394208a8da0d0825c202
parent68809365dfe32dd13ad9b3a8c2f555b2e8fa049b (diff)
downloadopencode-e9a17e4480c8295ae3f72d4ea68c55ae07bfdc41.tar.gz
opencode-e9a17e4480c8295ae3f72d4ea68c55ae07bfdc41.zip
fix(windows): restore /editor support on Windows (#17146)
-rw-r--r--packages/opencode/src/cli/cmd/tui/util/editor.ts28
-rw-r--r--packages/opencode/src/util/process.ts3
2 files changed, 19 insertions, 12 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/util/editor.ts b/packages/opencode/src/cli/cmd/tui/util/editor.ts
index 6d32c63c0..9eaae99fc 100644
--- a/packages/opencode/src/cli/cmd/tui/util/editor.ts
+++ b/packages/opencode/src/cli/cmd/tui/util/editor.ts
@@ -17,17 +17,21 @@ export namespace Editor {
await Filesystem.write(filepath, opts.value)
opts.renderer.suspend()
opts.renderer.currentRenderBuffer.clear()
- const parts = editor.split(" ")
- const proc = Process.spawn([...parts, filepath], {
- stdin: "inherit",
- stdout: "inherit",
- stderr: "inherit",
- })
- await proc.exited
- const content = await Filesystem.readText(filepath)
- opts.renderer.currentRenderBuffer.clear()
- opts.renderer.resume()
- opts.renderer.requestRender()
- return content || undefined
+ try {
+ const parts = editor.split(" ")
+ const proc = Process.spawn([...parts, filepath], {
+ stdin: "inherit",
+ stdout: "inherit",
+ stderr: "inherit",
+ shell: process.platform === "win32",
+ })
+ await proc.exited
+ const content = await Filesystem.readText(filepath)
+ return content || undefined
+ } finally {
+ opts.renderer.currentRenderBuffer.clear()
+ opts.renderer.resume()
+ opts.renderer.requestRender()
+ }
}
}
diff --git a/packages/opencode/src/util/process.ts b/packages/opencode/src/util/process.ts
index 049096937..9b37432c3 100644
--- a/packages/opencode/src/util/process.ts
+++ b/packages/opencode/src/util/process.ts
@@ -3,6 +3,7 @@ import { buffer } from "node:stream/consumers"
export namespace Process {
export type Stdio = "inherit" | "pipe" | "ignore"
+ export type Shell = boolean | string
export interface Options {
cwd?: string
@@ -10,6 +11,7 @@ export namespace Process {
stdin?: Stdio
stdout?: Stdio
stderr?: Stdio
+ shell?: Shell
abort?: AbortSignal
kill?: NodeJS.Signals | number
timeout?: number
@@ -60,6 +62,7 @@ export namespace Process {
cwd: opts.cwd,
env: opts.env === null ? {} : opts.env ? { ...process.env, ...opts.env } : undefined,
stdio: [opts.stdin ?? "ignore", opts.stdout ?? "ignore", opts.stderr ?? "ignore"],
+ shell: opts.shell,
windowsHide: process.platform === "win32",
})