From c26a365f5c266918baafcd24c24812404fd34de5 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 15 Sep 2020 01:11:59 -0400 Subject: [PATCH] Enable xterm automatically if screen init fails --- internal/screen/screen.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/internal/screen/screen.go b/internal/screen/screen.go index bd9005ac..967e8617 100644 --- a/internal/screen/screen.go +++ b/internal/screen/screen.go @@ -2,6 +2,7 @@ package screen import ( "errors" + "log" "os" "sync" @@ -144,16 +145,28 @@ func Init() error { } var oldTerm string - if config.GetGlobalOption("xterm").(bool) { + modifiedTerm := false + setXterm := func() { oldTerm = os.Getenv("TERM") os.Setenv("TERM", "xterm-256color") + modifiedTerm = true + } + + if config.GetGlobalOption("xterm").(bool) { + setXterm() } // Initilize tcell var err error Screen, err = tcell.NewScreen() if err != nil { - return err + log.Println("Warning: during screen initialization:", err) + log.Println("Falling back to TERM=xterm-256color") + setXterm() + Screen, err = tcell.NewScreen() + if err != nil { + return err + } } if err = Screen.Init(); err != nil { return err @@ -162,7 +175,7 @@ func Init() error { Screen.SetPaste(config.GetGlobalOption("paste").(bool)) // restore TERM - if config.GetGlobalOption("xterm").(bool) { + if modifiedTerm { os.Setenv("TERM", oldTerm) }