diff --git a/cmd/tsgo/enablevtprocessing_windows.go b/cmd/tsgo/enablevtprocessing_windows.go index d7197595db..249eba9572 100644 --- a/cmd/tsgo/enablevtprocessing_windows.go +++ b/cmd/tsgo/enablevtprocessing_windows.go @@ -5,12 +5,18 @@ import ( ) func enableVirtualTerminalProcessing() { - hStdout, err := windows.GetStdHandle(windows.STD_OUTPUT_HANDLE) - if err == nil && hStdout != windows.InvalidHandle { + h, err := windows.GetStdHandle(windows.STD_OUTPUT_HANDLE) + if err != nil || h == windows.InvalidHandle { + return + } + fileType, err := windows.GetFileType(h) + if err != nil || fileType == windows.FILE_TYPE_CHAR { var mode uint32 - err = windows.GetConsoleMode(windows.Handle(hStdout), &mode) - if err == nil { - windows.SetConsoleMode(windows.Handle(hStdout), mode|windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING) + if err := windows.GetConsoleMode(h, &mode); err != nil { + return + } + if mode&windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING == 0 { + windows.SetConsoleMode(h, mode|windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING) } } }