32 lines
634 B
Go
32 lines
634 B
Go
![]() |
package terminal
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
"strings"
|
||
|
"syscall"
|
||
|
)
|
||
|
|
||
|
// supportsEscapeCodes returns true if console handles escape codes.
|
||
|
func supportsEscapeCodes() bool {
|
||
|
if strings.ToLower(os.Getenv("TERM")) == "dumb" {
|
||
|
return false
|
||
|
}
|
||
|
if strings.ToLower(os.Getenv("ConEmuANSI")) == "on" {
|
||
|
// The ConEmu terminal is installed. Use it.
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
const ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004
|
||
|
|
||
|
h, err := syscall.GetStdHandle(syscall.STD_OUTPUT_HANDLE)
|
||
|
if err != nil {
|
||
|
return false
|
||
|
}
|
||
|
var m uint32
|
||
|
err = syscall.GetConsoleMode(h, &m)
|
||
|
if err != nil {
|
||
|
return false
|
||
|
}
|
||
|
return m&ENABLE_VIRTUAL_TERMINAL_PROCESSING != 0
|
||
|
}
|