diff options
| author | adamdotdevin <[email protected]> | 2025-08-11 18:58:32 -0500 |
|---|---|---|
| committer | adamdotdevin <[email protected]> | 2025-08-11 18:58:42 -0500 |
| commit | dec1e3fddabe253a2aa22f4bcfcee8ddfbcb9766 (patch) | |
| tree | f3df726bf55c85db3febe4ceb88e9cfbca85a021 /packages/tui | |
| parent | f54e9007160d3f4cd1d459447e1313e510f3df4a (diff) | |
| download | opencode-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.go | 15 |
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() |
