diff options
author | Yuri Sizov <11782833+YuriSizov@users.noreply.github.com> | 2022-09-08 19:53:04 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-08 19:53:04 +0300 |
commit | d2a6a187f45345f00214c746924c57752a1f5260 (patch) | |
tree | 5eabba9f731bebf5f376581722c024862ccf0c4f | |
parent | 141fdac36c0eb595dd11b27817446e42326bf2a0 (diff) | |
parent | debfc7c38bb7d485beeed691281d279ac816f6d2 (diff) |
Merge pull request #44118 from Calinou/windows-enable-ansi-escape-codes
Enable ANSI escape code processing on Windows 10 and later
-rw-r--r-- | platform/windows/os_windows.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index 403d53ae53..b7794bbbf8 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -1146,6 +1146,21 @@ OS_Windows::OS_Windows(HINSTANCE _hInstance) { DisplayServerWindows::register_windows_driver(); + // Enable ANSI escape code support on Windows 10 v1607 (Anniversary Update) and later. + // This lets the engine and projects use ANSI escape codes to color text just like on macOS and Linux. + // + // NOTE: The engine does not use ANSI escape codes to color error/warning messages; it uses Windows API calls instead. + // Therefore, error/warning messages are still colored on Windows versions older than 10. + HANDLE stdoutHandle; + stdoutHandle = GetStdHandle(STD_OUTPUT_HANDLE); + DWORD outMode = 0; + outMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; + + if (!SetConsoleMode(stdoutHandle, outMode)) { + // Windows 8.1 or below, or Windows 10 prior to Anniversary Update. + print_verbose("Can't set the ENABLE_VIRTUAL_TERMINAL_PROCESSING Windows console mode. `print_rich()` will not work as expected."); + } + Vector<Logger *> loggers; loggers.push_back(memnew(WindowsTerminalLogger)); _set_logger(memnew(CompositeLogger(loggers))); |