1package editor
2
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
5)
6
7type EditorKeyMap struct {
8 Send key.Binding
9 OpenEditor key.Binding
10}
11
12func DefaultEditorKeyMap() EditorKeyMap {
13 return EditorKeyMap{
14 Send: key.NewBinding(
15 key.WithKeys("enter"),
16 key.WithHelp("enter", "send"),
17 ),
18 OpenEditor: key.NewBinding(
19 key.WithKeys("ctrl+e"),
20 key.WithHelp("ctrl+e", "open editor"),
21 ),
22 }
23}
24
25// KeyBindings implements layout.KeyMapProvider
26func (k EditorKeyMap) KeyBindings() []key.Binding {
27 return []key.Binding{
28 k.Send,
29 k.OpenEditor,
30 }
31}
32
33// FullHelp implements help.KeyMap.
34func (k EditorKeyMap) FullHelp() [][]key.Binding {
35 m := [][]key.Binding{}
36 slice := k.KeyBindings()
37 for i := 0; i < len(slice); i += 4 {
38 end := min(i+4, len(slice))
39 m = append(m, slice[i:end])
40 }
41 return m
42}
43
44// ShortHelp implements help.KeyMap.
45func (k EditorKeyMap) ShortHelp() []key.Binding {
46 return []key.Binding{
47 k.Send,
48 k.OpenEditor,
49 }
50}
51
52// TODO: update this to use the new keymap concepts
53var AttachmentsKeyMaps = DeleteAttachmentKeyMaps{
54 AttachmentDeleteMode: key.NewBinding(
55 key.WithKeys("ctrl+r"),
56 key.WithHelp("ctrl+r+{i}", "delete attachment at index i"),
57 ),
58 Escape: key.NewBinding(
59 key.WithKeys("esc"),
60 key.WithHelp("esc", "cancel delete mode"),
61 ),
62 DeleteAllAttachments: key.NewBinding(
63 key.WithKeys("r"),
64 key.WithHelp("ctrl+r+r", "delete all attachments"),
65 ),
66}