This ensures that `IOStreams.Out` always keeps the original `Fd()` value even if it's wrapped as a Colorable stream for Windows in cases when enabling virtual terminal processing has failed.
16 lines
355 B
Go
16 lines
355 B
Go
//go:build windows
|
|
// +build windows
|
|
|
|
package iostreams
|
|
|
|
import (
|
|
"golang.org/x/sys/windows"
|
|
)
|
|
|
|
func enableVirtualTerminalProcessing(fd uintptr) error {
|
|
stdout := windows.Handle(fd)
|
|
|
|
var originalMode uint32
|
|
windows.GetConsoleMode(stdout, &originalMode)
|
|
return windows.SetConsoleMode(stdout, originalMode|windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING)
|
|
}
|