]> git.lizzy.rs Git - micro.git/commitdiff
Enable xterm automatically if screen init fails
authorZachary Yedidia <zyedidia@gmail.com>
Tue, 15 Sep 2020 05:11:59 +0000 (01:11 -0400)
committerZachary Yedidia <zyedidia@gmail.com>
Tue, 15 Sep 2020 05:11:59 +0000 (01:11 -0400)
internal/screen/screen.go

index bd9005acce7bf69db10a5f3b16de662d22fb9983..967e8617e1c9ab7d9f9b4dbd3915323007af721d 100644 (file)
@@ -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)
        }