summaryrefslogtreecommitdiffstats
path: root/clang/tools/clang-cc/clang-cc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/tools/clang-cc/clang-cc.cpp')
-rw-r--r--clang/tools/clang-cc/clang-cc.cpp12
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));
}
OpenPOWER on IntegriCloud