diff options
Diffstat (limited to 'clang/tools/clang-cc/clang-cc.cpp')
-rw-r--r-- | clang/tools/clang-cc/clang-cc.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/clang/tools/clang-cc/clang-cc.cpp b/clang/tools/clang-cc/clang-cc.cpp index 0e0a0727589..9e6afdd9463 100644 --- a/clang/tools/clang-cc/clang-cc.cpp +++ b/clang/tools/clang-cc/clang-cc.cpp @@ -328,6 +328,11 @@ MessageLength("fmessage-length", "within N columns or fewer, when possible."), llvm::cl::value_desc("N")); +static llvm::cl::opt<bool> +NoColorDiagnostic("fno-color-diagnostic", + llvm::cl::desc("Don't use colors when showing diagnostics " + "(automatically turned off if output is not a " + "terminal).")); //===----------------------------------------------------------------------===// // C++ Visualization. //===----------------------------------------------------------------------===// @@ -2150,6 +2155,10 @@ int main(int argc, char **argv) { if (MessageLength.getNumOccurrences() == 0) MessageLength.setValue(llvm::sys::Process::StandardErrColumns()); + if (!NoColorDiagnostic) { + NoColorDiagnostic.setValue(!llvm::sys::Process::StandardErrHasColors()); + } + DiagClient.reset(new TextDiagnosticPrinter(llvm::errs(), !NoShowColumn, !NoCaretDiagnostics, @@ -2157,7 +2166,8 @@ int main(int argc, char **argv) { PrintSourceRangeInfo, PrintDiagnosticOption, !NoDiagnosticsFixIt, - MessageLength)); + MessageLength, + !NoColorDiagnostic)); } else { DiagClient.reset(CreateHTMLDiagnosticClient(HTMLDiag)); } |