diff --git a/internal/config/settings.go b/internal/config/settings.go index f99ac527..81c431d8 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -256,6 +256,7 @@ var DefaultGlobalOnlySettings = map[string]interface{}{ "sucmd": "sudo", "pluginchannels": []string{"https://raw.githubusercontent.com/micro-editor/plugin-channel/master/channel.json"}, "pluginrepos": []string{}, + "xterm": false, } // a list of settings that should never be globally modified diff --git a/internal/screen/screen.go b/internal/screen/screen.go index 19f9bd8c..e0c3a6ab 100644 --- a/internal/screen/screen.go +++ b/internal/screen/screen.go @@ -136,6 +136,12 @@ func Init() { os.Setenv("TCELL_TRUECOLOR", "disable") } + var oldTerm string + if config.GetGlobalOption("xterm").(bool) { + oldTerm = os.Getenv("TERM") + os.Setenv("TERM", "xterm-256color") + } + // Initilize tcell var err error Screen, err = tcell.NewScreen() @@ -149,6 +155,11 @@ func Init() { os.Exit(1) } + // restore TERM + if config.GetGlobalOption("xterm").(bool) { + os.Setenv("TERM", oldTerm) + } + if config.GetGlobalOption("mouse").(bool) { Screen.EnableMouse() } diff --git a/runtime/help/options.md b/runtime/help/options.md index 12703b25..6ce5f4be 100644 --- a/runtime/help/options.md +++ b/runtime/help/options.md @@ -296,6 +296,13 @@ Here are the available options: default value: `true` +* `xterm`: micro will assume that the terminal it is running in conforms to + `xterm-256color` regardless of what the `$TERM` variable actually contains. + Enabling this option may cause unwanted effects if your terminal in fact + does not conform to the `xterm-256color` standard. + + Default value: `false` + --- Plugin options: all plugins come with a special option to enable or disable