summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorHaris Gušić <[email protected]>2025-11-01 01:12:28 +0100
committeropencode <[email protected]>2025-11-01 00:16:06 +0000
commitc72f8b17c67f21e62cdb2502ad3b55c2c01db4bf (patch)
treebfb778000ababc491edf4e8bcffcd0b7471b0067
parenteb304f41157d201734c54fc741b44f3f60cebbde (diff)
downloadopencode-c72f8b17c67f21e62cdb2502ad3b55c2c01db4bf.tar.gz
opencode-c72f8b17c67f21e62cdb2502ad3b55c2c01db4bf.zip
fix: tui: Fix /editor command (#3663)
-rw-r--r--packages/opencode/src/cli/cmd/tui/component/dialog-command.tsx4
-rw-r--r--packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx2
-rw-r--r--packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx9
-rw-r--r--packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx2
-rw-r--r--packages/opencode/src/cli/cmd/tui/util/editor.ts1
5 files changed, 7 insertions, 11 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-command.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-command.tsx
index 4b648e9d9..66a312e5b 100644
--- a/packages/opencode/src/cli/cmd/tui/component/dialog-command.tsx
+++ b/packages/opencode/src/cli/cmd/tui/component/dialog-command.tsx
@@ -41,10 +41,10 @@ function init() {
})
const result = {
- trigger(name: string) {
+ trigger(name: string, source?: "prompt") {
for (const option of options()) {
if (option.value === name) {
- option.onSelect?.(dialog)
+ option.onSelect?.(dialog, source)
return
}
}
diff --git a/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx b/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx
index 4f97d7885..ed46042b4 100644
--- a/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx
+++ b/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx
@@ -263,7 +263,7 @@ export function Autocomplete(props: {
{
display: "/editor",
description: "open editor",
- onSelect: () => command.trigger("prompt.editor"),
+ onSelect: () => command.trigger("prompt.editor", "prompt"),
},
{
display: "/help",
diff --git a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx
index 8c52ba3a7..f72b14899 100644
--- a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx
+++ b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx
@@ -98,14 +98,9 @@ export function Prompt(props: PromptProps) {
category: "Session",
keybind: "editor_open",
value: "prompt.editor",
- onSelect: async (dialog) => {
+ onSelect: async (dialog, trigger) => {
dialog.clear()
- const value = input.plainText
- input.clear()
- setStore("prompt", {
- input: "",
- parts: [],
- })
+ const value = trigger === "prompt" ? "" : input.plainText
const content = await Editor.open({ value, renderer })
if (content) {
input.setText(content, { history: false })
diff --git a/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx b/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx
index ee4888106..515c7c3d1 100644
--- a/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx
+++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx
@@ -35,7 +35,7 @@ export interface DialogSelectOption<T = any> {
category?: string
disabled?: boolean
bg?: RGBA
- onSelect?: (ctx: DialogContext) => void
+ onSelect?: (ctx: DialogContext, trigger?: "prompt") => void
}
export type DialogSelectRef<T> = {
diff --git a/packages/opencode/src/cli/cmd/tui/util/editor.ts b/packages/opencode/src/cli/cmd/tui/util/editor.ts
index 25a17fc7a..0aa69dcd8 100644
--- a/packages/opencode/src/cli/cmd/tui/util/editor.ts
+++ b/packages/opencode/src/cli/cmd/tui/util/editor.ts
@@ -24,6 +24,7 @@ export namespace Editor {
})
await proc.exited
const content = await Bun.file(filepath).text()
+ opts.renderer.currentRenderBuffer.clear()
opts.renderer.resume()
opts.renderer.requestRender()
return content || undefined