Skip to content

Commit

Permalink
refactor viewport keymap
Browse files Browse the repository at this point in the history
  • Loading branch information
robinovitch61 committed Jan 7, 2025
1 parent a518e6a commit df9d85e
Show file tree
Hide file tree
Showing 5 changed files with 254 additions and 187 deletions.
26 changes: 19 additions & 7 deletions internal/filterable_viewport/filterable_viewport.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,19 @@ func NewFilterableViewport[T viewport.RenderableComparable](config FilterableVie
f := filter.New(config.KeyMap)
f.SetShowContext(config.StartShowContext, config.CanToggleShowContext)

var vp = viewport.New[T](config.Width, config.Height)
km := viewport.KeyMap{
PageDown: config.KeyMap.PageDown,
PageUp: config.KeyMap.PageUp,
HalfPageUp: config.KeyMap.HalfPageUp,
HalfPageDown: config.KeyMap.HalfPageDown,
Up: config.KeyMap.Up,
Down: config.KeyMap.Down,
Left: config.KeyMap.Left,
Right: config.KeyMap.Right,
Top: config.KeyMap.Top,
Bottom: config.KeyMap.Bottom,
}
var vp = viewport.New[T](config.Width, config.Height, km)
vp.SetSelectionEnabled(config.SelectionEnabled)
vp.SetWrapText(config.StartWrapOn)

Expand Down Expand Up @@ -243,12 +255,12 @@ func (fv *FilterableViewport[T]) ToggleShowContext() {

func (fv *FilterableViewport[T]) SetUpDownMovementWithShift() {
upDownBindings := []*key.Binding{
&fv.viewport.KeyMap.Up,
&fv.viewport.KeyMap.Down,
&fv.viewport.KeyMap.PageUp,
&fv.viewport.KeyMap.PageDown,
&fv.viewport.KeyMap.HalfPageUp,
&fv.viewport.KeyMap.HalfPageDown,
&fv.keyMap.Up,
&fv.keyMap.Down,
&fv.keyMap.PageUp,
&fv.keyMap.PageDown,
&fv.keyMap.HalfPageUp,
&fv.keyMap.HalfPageDown,
}
for i := range upDownBindings {
newKeys := upDownBindings[i].Keys()
Expand Down
65 changes: 58 additions & 7 deletions internal/keymap/keymap.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package keymap

import (
"github.com/charmbracelet/bubbles/v2/key"
"github.com/robinovitch61/kl/internal/viewport"
)

type KeyMap struct {
Expand Down Expand Up @@ -30,6 +29,18 @@ type KeyMap struct {
Timestamps key.Binding
TogglePause key.Binding
Wrap key.Binding

// viewport
PageDown key.Binding
PageUp key.Binding
HalfPageUp key.Binding
HalfPageDown key.Binding
Up key.Binding
Down key.Binding
Left key.Binding
Right key.Binding
Top key.Binding
Bottom key.Binding
}

func DefaultKeyMap() KeyMap {
Expand Down Expand Up @@ -130,6 +141,46 @@ func DefaultKeyMap() KeyMap {
key.WithKeys("w"),
key.WithHelp("w", "toggle line wrap"),
),
PageDown: key.NewBinding(
key.WithKeys("pgdown", "f", "ctrl+f"),
key.WithHelp("f", "pgdn"),
),
PageUp: key.NewBinding(
key.WithKeys("pgup", "b", "ctrl+b"),
key.WithHelp("b", "pgup"),
),
HalfPageUp: key.NewBinding(
key.WithKeys("u", "ctrl+u"),
key.WithHelp("u", "½ page up"),
),
HalfPageDown: key.NewBinding(
key.WithKeys("d", "ctrl+d"),
key.WithHelp("d", "½ page down"),
),
Up: key.NewBinding(
key.WithKeys("up", "k"),
key.WithHelp("↑/k", "scroll up"),
),
Down: key.NewBinding(
key.WithKeys("down", "j"),
key.WithHelp("↓/j", "scroll down"),
),
Left: key.NewBinding(
key.WithKeys("left"),
key.WithHelp("←", "left"),
),
Right: key.NewBinding(
key.WithKeys("right"),
key.WithHelp("→", "right"),
),
Top: key.NewBinding(
key.WithKeys("g", "ctrl+g"),
key.WithHelp("g", "top"),
),
Bottom: key.NewBinding(
key.WithKeys("shift+g"),
key.WithHelp("G", "bottom"),
),
}
}

Expand Down Expand Up @@ -168,12 +219,12 @@ func GlobalKeyBindings(km KeyMap) []key.Binding {
km.FilterNextRow,
km.FilterPrevRow,
km.Context,
viewport.DefaultKeyMap().Up,
viewport.DefaultKeyMap().Down,
viewport.DefaultKeyMap().PageUp,
viewport.DefaultKeyMap().PageDown,
viewport.DefaultKeyMap().Top,
viewport.DefaultKeyMap().Bottom,
km.Up,
km.Down,
km.PageUp,
km.PageDown,
km.Top,
km.Bottom,
km.Save,
km.TogglePause,
WithDesc(km.Enter, "zoom on log"),
Expand Down
46 changes: 0 additions & 46 deletions internal/viewport/keymap.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,49 +15,3 @@ type KeyMap struct {
Top key.Binding
Bottom key.Binding
}

// DefaultKeyMap returns the default key bindings for a viewport.
func DefaultKeyMap() KeyMap {
return KeyMap{
PageDown: key.NewBinding(
key.WithKeys("pgdown", "f", "ctrl+f"),
key.WithHelp("f", "pgdn"),
),
PageUp: key.NewBinding(
key.WithKeys("pgup", "b", "ctrl+b"),
key.WithHelp("b", "pgup"),
),
HalfPageUp: key.NewBinding(
key.WithKeys("u", "ctrl+u"),
key.WithHelp("u", "½ page up"),
),
HalfPageDown: key.NewBinding(
key.WithKeys("d", "ctrl+d"),
key.WithHelp("d", "½ page down"),
),
Up: key.NewBinding(
key.WithKeys("up", "k"),
key.WithHelp("↑/k", "scroll up"),
),
Down: key.NewBinding(
key.WithKeys("down", "j"),
key.WithHelp("↓/j", "scroll down"),
),
Left: key.NewBinding(
key.WithKeys("left"),
key.WithHelp("←", "left"),
),
Right: key.NewBinding(
key.WithKeys("right"),
key.WithHelp("→", "right"),
),
Top: key.NewBinding(
key.WithKeys("g", "ctrl+g"),
key.WithHelp("g", "top"),
),
Bottom: key.NewBinding(
key.WithKeys("shift+g"),
key.WithHelp("G", "bottom"),
),
}
}
Loading

0 comments on commit df9d85e

Please sign in to comment.