@@ -40,6 +40,8 @@ type Completions interface {
40 Query() string // Returns the current filter query
40 Query() string // Returns the current filter query
41 KeyMap() KeyMap
41 KeyMap() KeyMap
42 Position() (int, int) // Returns the X and Y position of the completions popup
42 Position() (int, int) // Returns the X and Y position of the completions popup
45type completionsCmp struct {
47type completionsCmp struct {
@@ -54,6 +56,8 @@ type completionsCmp struct {
54 query string // The current filter query
56 query string // The current filter query
59+const maxCompletionsWidth = 80 // Maximum width for the completions popup
57func New() Completions {
61func New() Completions {
58 completionsKeyMap := DefaultKeyMap()
62 completionsKeyMap := DefaultKeyMap()
59 keyMap := list.DefaultKeyMap()
63 keyMap := list.DefaultKeyMap()
@@ -92,7 +96,7 @@ func (c *completionsCmp) Init() tea.Cmd {
92func (c *completionsCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
96func (c *completionsCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
93 switch msg := msg.(type) {
97 switch msg := msg.(type) {
94 case tea.WindowSizeMsg:
98 case tea.WindowSizeMsg:
95− c.width = min(msg.Width-c.x, 80)
99+ c.width = min(msg.Width-c.x, maxCompletionsWidth)
96 c.height = min(msg.Height-c.y, 15)
100 c.height = min(msg.Height-c.y, 15)
97 return c, nil
101 return c, nil
98 case tea.KeyPressMsg:
102 case tea.KeyPressMsg:
@@ -194,3 +198,11 @@ func (c *completionsCmp) KeyMap() KeyMap {
194func (c *completionsCmp) Position() (int, int) {
198func (c *completionsCmp) Position() (int, int) {
195 return c.x, c.y - c.height
199 return c.x, c.y - c.height
202+func (c *completionsCmp) Width() int {
206+func (c *completionsCmp) Height() int {