on main help sign in
feat(tui): support adding newlines in chat editor
50e7596Ayman Bagabas
internal/tui/components/chat/editor/editor.go+5−1
@@ -245,7 +245,11 @@ func (m *editorCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
245 m.deleteMode = false
245 m.deleteMode = false
246 return m, nil
246 return m, nil
247 }
247 }
248+ if key.Matches(msg, m.keyMap.Newline) {
249+ m.textarea.InsertRune('\n')
250+ return m, nil
251+ }
248− // Hanlde Enter key
252+ // Handle Enter key
249 if m.textarea.Focused() && key.Matches(msg, m.keyMap.SendMessage) {
253 if m.textarea.Focused() && key.Matches(msg, m.keyMap.SendMessage) {
250 value := m.textarea.Value()
254 value := m.textarea.Value()
251 if len(value) > 0 && value[len(value)-1] == '\\' {
255 if len(value) > 0 && value[len(value)-1] == '\\' {
internal/tui/components/chat/editor/keys.go+6
@@ -8,6 +8,7 @@ type EditorKeyMap struct {
8 AddFile key.Binding
8 AddFile key.Binding
9 SendMessage key.Binding
9 SendMessage key.Binding
10 OpenEditor key.Binding
10 OpenEditor key.Binding
11+ Newline key.Binding
11}
12}
12
13
13func DefaultEditorKeyMap() EditorKeyMap {
14func DefaultEditorKeyMap() EditorKeyMap {
@@ -24,6 +25,10 @@ func DefaultEditorKeyMap() EditorKeyMap {
24 key.WithKeys("ctrl+e"),
25 key.WithKeys("ctrl+e"),
25 key.WithHelp("ctrl+e", "open editor"),
26 key.WithHelp("ctrl+e", "open editor"),
26 ),
27 ),
28+ Newline: key.NewBinding(
29+ key.WithKeys("shift+enter", "ctrl+j"),
30+ key.WithHelp("shift+enter", "newline"), key.WithHelp("ctrl+j", "newline"),
31+ ),
27 }
32 }
28}
33}
29
34
@@ -33,6 +38,7 @@ func (k EditorKeyMap) KeyBindings() []key.Binding {
33 k.AddFile,
38 k.AddFile,
34 k.SendMessage,
39 k.SendMessage,
35 k.OpenEditor,
40 k.OpenEditor,
41+ k.Newline,
36 }
42 }
37}
43}
38
44