forked from OSchip/llvm-project
Emit diagnostics in chunks even when we're trying to print colored template diffs.
char-by-char is really slow on an unbuffered stream. llvm-svn: 166218
This commit is contained in:
parent
5ea6969422
commit
fce09f139c
|
@ -43,19 +43,22 @@ static const enum raw_ostream::Colors savedColor =
|
|||
/// \brief Add highlights to differences in template strings.
|
||||
static void applyTemplateHighlighting(raw_ostream &OS, StringRef Str,
|
||||
bool &Normal, bool Bold) {
|
||||
for (unsigned i = 0, e = Str.size(); i < e; ++i)
|
||||
if (Str[i] != ToggleHighlight) {
|
||||
OS << Str[i];
|
||||
} else {
|
||||
if (Normal)
|
||||
OS.changeColor(templateColor, true);
|
||||
else {
|
||||
OS.resetColor();
|
||||
if (Bold)
|
||||
OS.changeColor(savedColor, true);
|
||||
}
|
||||
Normal = !Normal;
|
||||
while (1) {
|
||||
size_t Pos = Str.find(ToggleHighlight);
|
||||
OS << Str.slice(0, Pos);
|
||||
if (Pos == StringRef::npos)
|
||||
break;
|
||||
|
||||
Str = Str.substr(Pos + 1);
|
||||
if (Normal)
|
||||
OS.changeColor(templateColor, true);
|
||||
else {
|
||||
OS.resetColor();
|
||||
if (Bold)
|
||||
OS.changeColor(savedColor, true);
|
||||
}
|
||||
Normal = !Normal;
|
||||
}
|
||||
}
|
||||
|
||||
/// \brief Number of spaces to indent when word-wrapping.
|
||||
|
|
Loading…
Reference in New Issue