delve/terminal/terminal_windows.go

32 lines
634 B
Go
Raw Normal View History

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
}