From 25c7fa55b1136742088026925175a4d2127eeba7 Mon Sep 17 00:00:00 2001 From: Dmytro Maluka Date: Mon, 10 Jun 2024 02:54:37 +0200 Subject: [PATCH] De-duplicate code for KeyEvent creation --- internal/action/bufpane.go | 8 +------- internal/action/events.go | 20 ++++++++++++-------- internal/action/infopane.go | 8 +------- internal/action/termpane.go | 8 +------- 4 files changed, 15 insertions(+), 29 deletions(-) diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 369749f5..34808eca 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -469,13 +469,7 @@ func (h *BufPane) HandleEvent(event tcell.Event) { h.paste(e.Text()) h.Relocate() case *tcell.EventKey: - ke := KeyEvent{ - code: e.Key(), - mod: metaToAlt(e.Modifiers()), - } - if e.Key() == tcell.KeyRune { - ke.r = e.Rune() - } + ke := keyEvent(e) done := h.DoKeyEvent(ke) if !done && e.Key() == tcell.KeyRune { diff --git a/internal/action/events.go b/internal/action/events.go index c0d5b7be..9b6a0ee6 100644 --- a/internal/action/events.go +++ b/internal/action/events.go @@ -44,6 +44,17 @@ func metaToAlt(mod tcell.ModMask) tcell.ModMask { return mod } +func keyEvent(e *tcell.EventKey) KeyEvent { + ke := KeyEvent{ + code: e.Key(), + mod: metaToAlt(e.Modifiers()), + } + if e.Key() == tcell.KeyRune { + ke.r = e.Rune() + } + return ke +} + func (k KeyEvent) Name() string { if k.any { return "" @@ -155,14 +166,7 @@ func (m MouseEvent) Name() string { func ConstructEvent(event tcell.Event) (Event, error) { switch e := event.(type) { case *tcell.EventKey: - ke := KeyEvent{ - code: e.Key(), - mod: metaToAlt(e.Modifiers()), - } - if e.Key() == tcell.KeyRune { - ke.r = e.Rune() - } - return ke, nil + return keyEvent(e), nil case *tcell.EventRaw: return RawEvent{ esc: e.EscSeq(), diff --git a/internal/action/infopane.go b/internal/action/infopane.go index 8f13c184..93dd9453 100644 --- a/internal/action/infopane.go +++ b/internal/action/infopane.go @@ -86,13 +86,7 @@ func (h *InfoPane) HandleEvent(event tcell.Event) { case *tcell.EventResize: // TODO case *tcell.EventKey: - ke := KeyEvent{ - code: e.Key(), - mod: metaToAlt(e.Modifiers()), - } - if e.Key() == tcell.KeyRune { - ke.r = e.Rune() - } + ke := keyEvent(e) done := h.DoKeyEvent(ke) hasYN := h.HasYN diff --git a/internal/action/termpane.go b/internal/action/termpane.go index 0cb50706..46d14d91 100644 --- a/internal/action/termpane.go +++ b/internal/action/termpane.go @@ -125,13 +125,7 @@ func (t *TermPane) Unsplit() { // copy-paste func (t *TermPane) HandleEvent(event tcell.Event) { if e, ok := event.(*tcell.EventKey); ok { - ke := KeyEvent{ - code: e.Key(), - mod: metaToAlt(e.Modifiers()), - } - if e.Key() == tcell.KeyRune { - ke.r = e.Rune() - } + ke := keyEvent(e) action, more := TermBindings.NextEvent(ke, nil) if !more {