@@ -140,7 +140,7 @@ func (c *completionsCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
140 selectedItem := *s
140 selectedItem := *s
141 c.list.SetSelected(selectedItem.ID())
141 c.list.SetSelected(selectedItem.ID())
142 return c, util.CmdHandler(SelectCompletionMsg{
142 return c, util.CmdHandler(SelectCompletionMsg{
143− Value: selectedItem,
143+ Value: selectedItem.Value(),
144 Insert: true,
144 Insert: true,
146 case key.Matches(msg, c.keyMap.DownInsert):
146 case key.Matches(msg, c.keyMap.DownInsert):
@@ -151,7 +151,7 @@ func (c *completionsCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
151 selectedItem := *s
151 selectedItem := *s
152 c.list.SetSelected(selectedItem.ID())
152 c.list.SetSelected(selectedItem.ID())
153 return c, util.CmdHandler(SelectCompletionMsg{
153 return c, util.CmdHandler(SelectCompletionMsg{
154− Value: selectedItem,
154+ Value: selectedItem.Value(),
155 Insert: true,
155 Insert: true,
157 case key.Matches(msg, c.keyMap.Select):
157 case key.Matches(msg, c.keyMap.Select):
@@ -162,7 +162,7 @@ func (c *completionsCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
162 selectedItem := *s
162 selectedItem := *s
163 c.open = false // Close completions after selection
163 c.open = false // Close completions after selection
164 return c, util.CmdHandler(SelectCompletionMsg{
164 return c, util.CmdHandler(SelectCompletionMsg{
165− Value: selectedItem,
165+ Value: selectedItem.Value(),
167 case key.Matches(msg, c.keyMap.Cancel):
167 case key.Matches(msg, c.keyMap.Cancel):
168 return c, util.CmdHandler(CloseCompletionsMsg{})
168 return c, util.CmdHandler(CloseCompletionsMsg{})
@@ -272,18 +272,14 @@ func (c *completionsCmp) View() string {
272// listWidth returns the width of the last 10 items in the list, which is used
272// listWidth returns the width of the last 10 items in the list, which is used
273// to determine the width of the completions popup.
273// to determine the width of the completions popup.
274// Note this only works for [completionItemCmp] items.
274// Note this only works for [completionItemCmp] items.
275−func listWidth[T any](items []T) int {
275+func listWidth(items []list.CompletionItem[any]) int {
276 var width int
276 var width int
277 if len(items) == 0 {
277 if len(items) == 0 {
278 return width
278 return width
281 for i := len(items) - 1; i >= 0 && i >= len(items)-10; i-- {
281 for i := len(items) - 1; i >= 0 && i >= len(items)-10; i-- {
282− item, ok := any(items[i]).(*completionItemCmp)
282+ itemWidth := lipgloss.Width(items[i].Text()) + 2 // +2 for padding
286− itemWidth := lipgloss.Width(item.text) + 2 // +2 for padding
287 width = max(width, itemWidth)
283 width = max(width, itemWidth)