@@ -2,12 +2,16 @@ package editor
22
33import (
44 "github.com/charmbracelet/bubbles/v2/key"
5+ tea "github.com/charmbracelet/bubbletea/v2"
56)
67
78type EditorKeyMap struct {
89 AddFile key.Binding
910 SendMessage key.Binding
1011 OpenEditor key.Binding
12+ Newline key.Binding
13+
14+ keyboard tea.KeyboardEnhancementsMsg
1115}
1216
1317func DefaultEditorKeyMap() EditorKeyMap {
@@ -24,15 +28,27 @@ func DefaultEditorKeyMap() EditorKeyMap {
2428 key.WithKeys("ctrl+e"),
2529 key.WithHelp("ctrl+e", "open editor"),
2630 ),
31+ Newline: key.NewBinding(
32+ key.WithKeys("shift+enter", "ctrl+j"),
33+ // "ctrl+j" is a common keybinding for newline in many editors. If
34+ // the terminal supports "shift+enter", we substitute the help text
35+ // to reflect that.
36+ key.WithHelp("ctrl+j", "newline"),
37+ ),
2738 }
2839}
2940
3041// KeyBindings implements layout.KeyMapProvider
3142func (k EditorKeyMap) KeyBindings() []key.Binding {
43+ newline := k.Newline
44+ if k.keyboard.SupportsKeyDisambiguation() {
45+ newline.SetHelp("shift+enter", newline.Help().Desc)
46+ }
3247 return []key.Binding{
3348 k.AddFile,
3449 k.SendMessage,
3550 k.OpenEditor,
51+ newline,
3652 }
3753}
3854