dsanders11 created this revision. dsanders11 added reviewers: aaron.ballman, njames93. Herald added subscribers: llvm-commits, cfe-commits, hiraditya, xazax.hun. Herald added projects: clang, LLVM. dsanders11 requested review of this revision.
On Windows the --use-color option cannot be used for its originally intended purpose of forcing color when piping stdout, since Windows does not use ANSI escape codes by default. This change turns on ANSI escape codes on Windows when forcing color to a non-displayed stdout (e.g. piped). Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D90109 Files: clang-tools-extra/clang-tidy/ClangTidy.cpp llvm/lib/Support/Windows/Process.inc Index: llvm/lib/Support/Windows/Process.inc =================================================================== --- llvm/lib/Support/Windows/Process.inc +++ llvm/lib/Support/Windows/Process.inc @@ -327,9 +327,10 @@ if (enable) { HANDLE Console = GetStdHandle(STD_OUTPUT_HANDLE); DWORD Mode; - GetConsoleMode(Console, &Mode); - Mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; - SetConsoleMode(Console, Mode); + if (GetConsoleMode(Console, &Mode) != 0) { + Mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; + SetConsoleMode(Console, Mode); + } } #endif UseANSI = enable; Index: clang-tools-extra/clang-tidy/ClangTidy.cpp =================================================================== --- clang-tools-extra/clang-tidy/ClangTidy.cpp +++ clang-tools-extra/clang-tidy/ClangTidy.cpp @@ -110,6 +110,11 @@ DiagOpts->ShowColors = Context.getOptions().UseColor.getValueOr( llvm::sys::Process::StandardOutHasColors()); DiagPrinter->BeginSourceFile(LangOpts); +#if defined(_WIN32) + if (DiagOpts->ShowColors && !llvm::sys::Process::StandardOutIsDisplayed()) { + llvm::sys::Process::UseANSIEscapeCodes(true); + } +#endif } SourceManager &getSourceManager() { return SourceMgr; }
Index: llvm/lib/Support/Windows/Process.inc =================================================================== --- llvm/lib/Support/Windows/Process.inc +++ llvm/lib/Support/Windows/Process.inc @@ -327,9 +327,10 @@ if (enable) { HANDLE Console = GetStdHandle(STD_OUTPUT_HANDLE); DWORD Mode; - GetConsoleMode(Console, &Mode); - Mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; - SetConsoleMode(Console, Mode); + if (GetConsoleMode(Console, &Mode) != 0) { + Mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; + SetConsoleMode(Console, Mode); + } } #endif UseANSI = enable; Index: clang-tools-extra/clang-tidy/ClangTidy.cpp =================================================================== --- clang-tools-extra/clang-tidy/ClangTidy.cpp +++ clang-tools-extra/clang-tidy/ClangTidy.cpp @@ -110,6 +110,11 @@ DiagOpts->ShowColors = Context.getOptions().UseColor.getValueOr( llvm::sys::Process::StandardOutHasColors()); DiagPrinter->BeginSourceFile(LangOpts); +#if defined(_WIN32) + if (DiagOpts->ShowColors && !llvm::sys::Process::StandardOutIsDisplayed()) { + llvm::sys::Process::UseANSIEscapeCodes(true); + } +#endif } SourceManager &getSourceManager() { return SourceMgr; }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits