@@ -2,6 +2,7 @@ package editor
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5+ tea "github.com/charmbracelet/bubbletea/v2"
7type EditorKeyMap struct {
8type EditorKeyMap struct {
@@ -9,6 +10,8 @@ type EditorKeyMap struct {
9 SendMessage key.Binding
10 SendMessage key.Binding
10 OpenEditor key.Binding
11 OpenEditor key.Binding
11 Newline key.Binding
12 Newline key.Binding
14+ keyboard tea.KeyboardEnhancementsMsg
14func DefaultEditorKeyMap() EditorKeyMap {
17func DefaultEditorKeyMap() EditorKeyMap {
@@ -27,18 +30,25 @@ func DefaultEditorKeyMap() EditorKeyMap {
28 Newline: key.NewBinding(
31 Newline: key.NewBinding(
29 key.WithKeys("shift+enter", "ctrl+j"),
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
30− key.WithHelp("shift+enter", "newline"), key.WithHelp("ctrl+j", "newline"),
36+ key.WithHelp("ctrl+j", "newline"),
35// KeyBindings implements layout.KeyMapProvider
41// KeyBindings implements layout.KeyMapProvider
36func (k EditorKeyMap) KeyBindings() []key.Binding {
42func (k EditorKeyMap) KeyBindings() []key.Binding {
44+ if k.keyboard.SupportsKeyDisambiguation() {
45+ newline.SetHelp("shift+enter", newline.Help().Desc)
37 return []key.Binding{
47 return []key.Binding{
38 k.AddFile,
48 k.AddFile,
39 k.SendMessage,
49 k.SendMessage,
40 k.OpenEditor,
50 k.OpenEditor,
41− k.Newline,
51+ newline,