1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-03-21 21:47:32 +02:00

minor refactor

This commit is contained in:
Jesse Duffield 2021-04-05 09:01:08 +10:00
parent d4622bac30
commit c7e23952c7
4 changed files with 51 additions and 54 deletions
test/lazyintegration
vendor/github.com/jesseduffield/gocui

@ -72,7 +72,7 @@ func main() {
Loop:
for {
g, err := gocui.NewGui(gocui.OutputNormal, false, false)
g, err := gocui.NewGui(gocui.OutputTrue, false, gocui.NORMAL)
if err != nil {
log.Panicln(err)
}

@ -7,6 +7,7 @@ package gocui
import (
standardErrors "errors"
"fmt"
"log"
"runtime"
"strings"
"sync"
@ -1182,3 +1183,49 @@ func IsUnknownView(err error) bool {
func IsQuit(err error) bool {
return err != nil && err.Error() == ErrQuit.Error()
}
func (g *Gui) replayRecording() {
ticker := time.NewTicker(time.Millisecond)
defer ticker.Stop()
// The playback could be paused at any time because integration tests run concurrently.
// Therefore we can't just check for a given event whether we've passed its timestamp,
// or else we'll have an explosion of keypresses after the test is resumed.
// We need to check if we've waited long enough since the last event was replayed.
// Only handling key events for now.
for i, event := range g.Recording.KeyEvents {
var prevEventTimestamp int64 = 0
if i > 0 {
prevEventTimestamp = g.Recording.KeyEvents[i-1].Timestamp
}
timeToWait := (event.Timestamp - prevEventTimestamp) / int64(g.RecordingConfig.Speed)
if i == 0 {
timeToWait += int64(g.RecordingConfig.Leeway)
}
var timeWaited int64 = 0
middle:
for {
select {
case <-ticker.C:
timeWaited += 1
if g != nil && timeWaited >= timeToWait {
g.ReplayedEvents.keys <- event
break middle
}
case <-g.stop:
return
}
}
}
// leaving some time for any handlers to execute before quitting
time.Sleep(time.Second * 1)
g.Update(func(*Gui) error {
return ErrQuit
})
time.Sleep(time.Second * 1)
log.Fatal("gocui should have already exited")
}

@ -1,52 +0,0 @@
package gocui
import (
"log"
"time"
)
func (g *Gui) replayRecording() {
ticker := time.NewTicker(time.Millisecond)
defer ticker.Stop()
// The playback could be paused at any time because integration tests run concurrently.
// Therefore we can't just check for a given event whether we've passed its timestamp,
// or else we'll have an explosion of keypresses after the test is resumed.
// We need to check if we've waited long enough since the last event was replayed.
// Only handling key events for now.
for i, event := range g.Recording.KeyEvents {
var prevEventTimestamp int64 = 0
if i > 0 {
prevEventTimestamp = g.Recording.KeyEvents[i-1].Timestamp
}
timeToWait := (event.Timestamp - prevEventTimestamp) / int64(g.RecordingConfig.Speed)
if i == 0 {
timeToWait += int64(g.RecordingConfig.Leeway)
}
var timeWaited int64 = 0
middle:
for {
select {
case <-ticker.C:
timeWaited += 1
if g != nil && timeWaited >= timeToWait {
g.ReplayedEvents.keys <- event
break middle
}
case <-g.stop:
return
}
}
}
// leaving some time for any handlers to execute before quitting
time.Sleep(time.Second * 1)
g.Update(func(*Gui) error {
return ErrQuit
})
time.Sleep(time.Second * 1)
log.Fatal("gocui should have already exited")
}

@ -190,7 +190,9 @@ func (g *Gui) pollEvent() GocuiEvent {
return GocuiEvent{Type: eventResize, Width: w, Height: h}
case *tcell.EventKey:
if g.PlayMode == RECORDING {
g.Recording.KeyEvents = append(g.Recording.KeyEvents, NewTcellKeyEventWrapper(tev, g.timeSinceStart()))
g.Recording.KeyEvents = append(
g.Recording.KeyEvents, NewTcellKeyEventWrapper(tev, g.timeSinceStart()),
)
}
k := tev.Key()