From cf95e44cb4ce6f42a318abba0efa77c7311c87c9 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Wed, 26 Apr 2023 15:13:08 +0900 Subject: Add 'zero' event Close #3263 --- src/options.go | 2 ++ src/terminal.go | 18 +++++++++++++----- src/tui/tui.go | 10 ++++++++++ 3 files changed, 25 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/options.go b/src/options.go index e0a5caf6..6f6b25e8 100644 --- a/src/options.go +++ b/src/options.go @@ -632,6 +632,8 @@ func parseKeyChordsImpl(str string, message string, exit func(string)) map[tui.E add(tui.Focus) case "one": add(tui.One) + case "zero": + add(tui.Zero) case "alt-enter", "alt-return": chords[tui.CtrlAltKey('m')] = key case "alt-space": diff --git a/src/terminal.go b/src/terminal.go index 47991a65..3dc2062f 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -956,10 +956,18 @@ func (t *Terminal) UpdateList(merger *Merger, reset bool) { t.cy = count - util.Min(count, t.maxItems()) + pos } } - if !t.reading && t.merger.Length() == 1 { - one := tui.One.AsEvent() - if _, prs := t.keymap[one]; prs { - t.eventChan <- one + if !t.reading { + switch t.merger.Length() { + case 0: + zero := tui.Zero.AsEvent() + if _, prs := t.keymap[zero]; prs { + t.eventChan <- zero + } + case 1: + one := tui.One.AsEvent() + if _, prs := t.keymap[one]; prs { + t.eventChan <- one + } } } t.mutex.Unlock() @@ -2854,7 +2862,7 @@ func (t *Terminal) Loop() { } select { case event = <-t.eventChan: - needBarrier = event != tui.Load.AsEvent() + needBarrier = !event.Is(tui.Load, tui.One, tui.Zero) case actions = <-t.serverChan: event = tui.Invalid.AsEvent() needBarrier = false diff --git a/src/tui/tui.go b/src/tui/tui.go index b8b7ae6a..a0e0b487 100644 --- a/src/tui/tui.go +++ b/src/tui/tui.go @@ -94,6 +94,7 @@ const ( Load Focus One + Zero AltBS @@ -283,6 +284,15 @@ type Event struct { MouseEvent *MouseEvent } +func (e Event) Is(types ...EventType) bool { + for _, t := range types { + if e.Type == t { + return true + } + } + return false +} + type MouseEvent struct { Y int X int -- cgit v1.2.3