Files
teaqlite/internal/app/edit_cell_keys.go
2025-07-13 21:05:32 -07:00

82 lines
2.1 KiB
Go

package app
import "github.com/charmbracelet/bubbles/key"
// EditCellKeyMap defines keybindings for the edit cell view
type EditCellKeyMap struct {
Save key.Binding
Cancel key.Binding
CursorLeft key.Binding
CursorRight key.Binding
WordLeft key.Binding
WordRight key.Binding
LineStart key.Binding
LineEnd key.Binding
DeleteWord key.Binding
DeleteChar key.Binding
ToggleHelp key.Binding
}
// DefaultEditCellKeyMap returns the default keybindings for edit cell
func DefaultEditCellKeyMap() EditCellKeyMap {
return EditCellKeyMap{
Save: key.NewBinding(
key.WithKeys("enter"),
key.WithHelp("enter", "save"),
),
Cancel: key.NewBinding(
key.WithKeys("esc"),
key.WithHelp("esc", "cancel"),
),
CursorLeft: key.NewBinding(
key.WithKeys("left"),
key.WithHelp("←", "cursor left"),
),
CursorRight: key.NewBinding(
key.WithKeys("right"),
key.WithHelp("→", "cursor right"),
),
WordLeft: key.NewBinding(
key.WithKeys("ctrl+left"),
key.WithHelp("ctrl+←", "word left"),
),
WordRight: key.NewBinding(
key.WithKeys("ctrl+right"),
key.WithHelp("ctrl+→", "word right"),
),
LineStart: key.NewBinding(
key.WithKeys("home", "ctrl+a"),
key.WithHelp("home/ctrl+a", "line start"),
),
LineEnd: key.NewBinding(
key.WithKeys("end", "ctrl+e"),
key.WithHelp("end/ctrl+e", "line end"),
),
DeleteWord: key.NewBinding(
key.WithKeys("ctrl+w"),
key.WithHelp("ctrl+w", "delete word"),
),
DeleteChar: key.NewBinding(
key.WithKeys("backspace"),
key.WithHelp("backspace", "delete char"),
),
ToggleHelp: key.NewBinding(
key.WithKeys("ctrl+g"),
key.WithHelp("ctrl+g", "toggle help"),
),
}
}
// ShortHelp returns keybindings to be shown in the mini help view
func (k EditCellKeyMap) ShortHelp() []key.Binding {
return []key.Binding{k.Save, k.Cancel, k.ToggleHelp}
}
// FullHelp returns keybindings for the expanded help view
func (k EditCellKeyMap) FullHelp() [][]key.Binding {
return [][]key.Binding{
{k.Save, k.Cancel},
{k.CursorLeft, k.CursorRight, k.WordLeft, k.WordRight},
{k.LineStart, k.LineEnd, k.DeleteWord, k.DeleteChar, k.ToggleHelp},
}
}