From ecf0c55b63526443720be994fad18081dbe3b672 Mon Sep 17 00:00:00 2001 From: David Bolvansky Date: Tue, 4 Sep 2018 19:23:05 +0000 Subject: Set console mode when -fansi-escape-codes is enabled Summary: Windows console now supports supports ANSI escape codes, but we need to enable it using SetConsoleMode with ENABLE_VIRTUAL_TERMINAL_PROCESSING flag. Fixes https://bugs.llvm.org/show_bug.cgi?id=38817 Tested on Windows 10, screenshot: https://i.imgur.com/bqYq0Uy.png Reviewers: zturner, chandlerc Reviewed By: zturner Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D51611 llvm-svn: 341396 --- llvm/lib/Support/Windows/Process.inc | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'llvm/lib/Support/Windows/Process.inc') diff --git a/llvm/lib/Support/Windows/Process.inc b/llvm/lib/Support/Windows/Process.inc index 30126568769..668d0b7a2e4 100644 --- a/llvm/lib/Support/Windows/Process.inc +++ b/llvm/lib/Support/Windows/Process.inc @@ -328,6 +328,15 @@ bool Process::StandardErrHasColors() { static bool UseANSI = false; void Process::UseANSIEscapeCodes(bool enable) { +#if defined(ENABLE_VIRTUAL_TERMINAL_PROCESSING) + if (enable) { + HANDLE Console = GetStdHandle(STD_OUTPUT_HANDLE); + DWORD Mode; + GetConsoleMode(Console, &Mode); + Mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; + SetConsoleMode(Console, Mode); + } +#endif UseANSI = enable; } -- cgit v1.2.3