diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 28 |
1 files changed, 25 insertions, 3 deletions
@@ -118,9 +118,31 @@ func mainGogui() { // it runs SetManagerFunc which passes every input // event (keyboard, mouse, etc) to the function "gocuiEvent()" func gocuiMain() { + defer func() { + if r := recover(); r != nil { + log.Warn("YAHOOOO Recovered in gocuiMain()", r) + log.Warn("Recovered from panic:", r) + me.baseGui.Close() + panic("BUMMER 2") + + // allow gocui to close if possible, then print stack + log.Sleep(1) + os.Stdout = origStdout + os.Stderr = origStderr + me.myTree.SendToolkitPanic() + log.Warn("Stack trace:") + debug.PrintStack() + + // attempt to switch to the nocui toolkit + log.Sleep(1) + me.myTree.SendToolkitLoad("nocui") + // panic("BUMMER") + return + } + }() g, err := gocui.NewGui(gocui.OutputNormal, true) if err != nil { - panic(err) + return } defer g.Close() @@ -135,10 +157,10 @@ func gocuiMain() { g.SetManagerFunc(gocuiEvent) if err := defaultKeybindings(g); err != nil { - panic(err) + // normally panic here } if err := g.MainLoop(); err != nil && !errors.Is(err, gocui.ErrQuit) { - panic(err) + // normally panic here } } |
