summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2023-04-26 15:13:08 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2023-04-26 15:13:08 +0900
commitcf95e44cb4ce6f42a318abba0efa77c7311c87c9 (patch)
tree58d0c5b9cc50f69485f4450fd71f4a0b5185d736 /src
parent65dd2bb42947d4ede31d160214f3a4c6fdc619e1 (diff)
downloadfzf-cf95e44cb4ce6f42a318abba0efa77c7311c87c9.tar.gz
Add 'zero' event
Close #3263
Diffstat (limited to 'src')
-rw-r--r--src/options.go2
-rw-r--r--src/terminal.go18
-rw-r--r--src/tui/tui.go10
3 files changed, 25 insertions, 5 deletions
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