@@ -29,6 +29,10 @@ type FilterCompletionsMsg struct {
29 Reopen bool
29 Reopen bool
32+type RepositionCompletionsMsg struct {
32type CompletionsClosedMsg struct{}
36type CompletionsClosedMsg struct{}
34type CompletionsOpenedMsg struct{}
38type CompletionsOpenedMsg struct{}
@@ -52,6 +56,7 @@ type Completions interface {
53type completionsCmp struct {
57type completionsCmp struct {
54 wWidth int // The window width
58 wWidth int // The window width
59+ wHeight int // The window height
56 lastWidth int
61 lastWidth int
57 height int // Height of the completions component`
62 height int // Height of the completions component`
@@ -88,7 +93,7 @@ func New() Completions {
89 return &completionsCmp{
94 return &completionsCmp{
91− height: 0,
96+ height: maxCompletionsHeight,
93 query: "",
98 query: "",
94 keyMap: completionsKeyMap,
99 keyMap: completionsKeyMap,
@@ -107,8 +112,7 @@ func (c *completionsCmp) Init() tea.Cmd {
107func (c *completionsCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
112func (c *completionsCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
108 switch msg := msg.(type) {
113 switch msg := msg.(type) {
109 case tea.WindowSizeMsg:
114 case tea.WindowSizeMsg:
110− c.wWidth = msg.Width
115+ c.wWidth, c.wHeight = msg.Width, msg.Height
111− c.height = min(msg.Height-c.y, 15)
112 return c, nil
116 return c, nil
113 case tea.KeyPressMsg:
117 case tea.KeyPressMsg:
@@ -159,6 +163,8 @@ func (c *completionsCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
159 case key.Matches(msg, c.keyMap.Cancel):
163 case key.Matches(msg, c.keyMap.Cancel):
160 return c, util.CmdHandler(CloseCompletionsMsg{})
164 return c, util.CmdHandler(CloseCompletionsMsg{})
166+ case RepositionCompletionsMsg:
167+ c.x, c.y = msg.X, msg.Y
162 case CloseCompletionsMsg:
168 case CloseCompletionsMsg:
163 c.open = false
169 c.open = false
164 return c, util.CmdHandler(CompletionsClosedMsg{})
170 return c, util.CmdHandler(CompletionsClosedMsg{})