summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-02-02 11:47:32 -0600
committerJeff Carr <[email protected]>2024-02-02 11:47:32 -0600
commitd4c2f8cb1b7514c1afa1d85092988b3ef25cef16 (patch)
tree4d521ef65c8ed740d573d2938a01f512a223188d /main.go
parentd6f1a45c77ca5f8fd92522166c488938797b706b (diff)
crippled, but works
Signed-off-by: Jeff Carr <[email protected]>
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
}
}