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 54762931e..047e3c096 100644 --- a/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx @@ -51,10 +51,13 @@ export function Autocomplete(props: { }) function insertPart(text: string, part: PromptInfo["parts"][number]) { - const append = "@" + text + " " const input = props.input() const currentCursorOffset = input.visualCursor.offset + const charAfterCursor = props.value.at(currentCursorOffset) + const needsSpace = charAfterCursor !== " " && charAfterCursor !== undefined + const append = "@" + text + (needsSpace ? " " : "") + input.cursorOffset = store.index const startCursor = input.logicalCursor input.cursorOffset = currentCursorOffset @@ -316,8 +319,9 @@ export function Autocomplete(props: { } if (!store.visible) { if (e.name === "@") { - const last = props.value.at(-1) - if (last === " " || last === undefined) { + const cursorOffset = props.input().visualCursor.offset + const charBeforeCursor = cursorOffset === 0 ? undefined : props.value.at(cursorOffset - 1) + if (charBeforeCursor === " " || charBeforeCursor === undefined) { show("@") } }