summaryrefslogtreecommitdiffhomepage
path: root/packages/tui
diff options
context:
space:
mode:
authoradamdotdevin <[email protected]>2025-08-11 18:58:32 -0500
committeradamdotdevin <[email protected]>2025-08-11 18:58:42 -0500
commitdec1e3fddabe253a2aa22f4bcfcee8ddfbcb9766 (patch)
treef3df726bf55c85db3febe4ceb88e9cfbca85a021 /packages/tui
parentf54e9007160d3f4cd1d459447e1313e510f3df4a (diff)
downloadopencode-dec1e3fddabe253a2aa22f4bcfcee8ddfbcb9766.tar.gz
opencode-dec1e3fddabe253a2aa22f4bcfcee8ddfbcb9766.zip
fix: complete item on space
Diffstat (limited to 'packages/tui')
-rw-r--r--packages/tui/internal/components/dialog/complete.go15
1 files changed, 14 insertions, 1 deletions
diff --git a/packages/tui/internal/components/dialog/complete.go b/packages/tui/internal/components/dialog/complete.go
index d3d2ea9d7..176d6e11c 100644
--- a/packages/tui/internal/components/dialog/complete.go
+++ b/packages/tui/internal/components/dialog/complete.go
@@ -99,7 +99,10 @@ func (c *completionDialogComponent) getAllCompletions(query string) tea.Cmd {
baseStyle := styles.NewStyle().Background(t.BackgroundElement())
// Ensure stable provider order just in case
- sort.SliceStable(itemsByProvider, func(i, j int) bool { return itemsByProvider[i].idx < itemsByProvider[j].idx })
+ sort.SliceStable(
+ itemsByProvider,
+ func(i, j int) bool { return itemsByProvider[i].idx < itemsByProvider[j].idx },
+ )
final := make([]completions.CompletionSuggestion, 0)
for _, entry := range itemsByProvider {
@@ -167,6 +170,16 @@ func (c *completionDialogComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
value := c.pseudoSearchTextArea.Value()
width := lipgloss.Width(value)
triggerWidth := lipgloss.Width(c.trigger)
+
+ if msg.String() == "space" || msg.String() == " " {
+ item, i := c.list.GetSelectedItem()
+ if i > -1 {
+ return c, c.complete(item)
+ }
+ // If no exact match, close the dialog
+ return c, c.close()
+ }
+
// Only close on backspace when there are no characters left, unless we're back to just the trigger
if (msg.String() != "backspace" && msg.String() != "ctrl+h") || (width <= triggerWidth && value != c.trigger) {
return c, c.close()