Skip to content

Commit 8422c49

Browse files
authored
feat(filter): Add cyclic navigation (#483)
1 parent b0f4413 commit 8422c49

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

filter/filter.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -255,29 +255,41 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
255255

256256
func (m *model) CursorUp() {
257257
if m.reverse {
258-
m.cursor = clamp(0, len(m.matches)-1, m.cursor+1)
258+
m.cursor = (m.cursor + 1) % len(m.matches)
259259
if len(m.matches)-m.cursor <= m.viewport.YOffset {
260-
m.viewport.SetYOffset(len(m.matches) - m.cursor - 1)
260+
m.viewport.LineUp(1)
261+
}
262+
if len(m.matches)-m.cursor > m.viewport.Height+m.viewport.YOffset {
263+
m.viewport.SetYOffset(len(m.matches) - m.viewport.Height)
261264
}
262265
} else {
263-
m.cursor = clamp(0, len(m.matches)-1, m.cursor-1)
266+
m.cursor = (m.cursor - 1 + len(m.matches)) % len(m.matches)
264267
if m.cursor < m.viewport.YOffset {
265-
m.viewport.SetYOffset(m.cursor)
268+
m.viewport.LineUp(1)
269+
}
270+
if m.cursor >= m.viewport.YOffset+m.viewport.Height {
271+
m.viewport.SetYOffset(len(m.matches) - m.viewport.Height)
266272
}
267273
}
268274
}
269275

270276
func (m *model) CursorDown() {
271277
if m.reverse {
272-
m.cursor = clamp(0, len(m.matches)-1, m.cursor-1)
278+
m.cursor = (m.cursor - 1 + len(m.matches)) % len(m.matches)
273279
if len(m.matches)-m.cursor > m.viewport.Height+m.viewport.YOffset {
274280
m.viewport.LineDown(1)
275281
}
282+
if len(m.matches)-m.cursor <= m.viewport.YOffset {
283+
m.viewport.GotoTop()
284+
}
276285
} else {
277-
m.cursor = clamp(0, len(m.matches)-1, m.cursor+1)
286+
m.cursor = (m.cursor + 1) % len(m.matches)
278287
if m.cursor >= m.viewport.YOffset+m.viewport.Height {
279288
m.viewport.LineDown(1)
280289
}
290+
if m.cursor < m.viewport.YOffset {
291+
m.viewport.GotoTop()
292+
}
281293
}
282294
}
283295

0 commit comments

Comments
 (0)