summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go28
1 files changed, 25 insertions, 3 deletions
diff --git a/main.go b/main.go
index 4d4dde4..e90794e 100644
--- a/main.go
+++ b/main.go
@@ -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
}
}