Disable printing the reset escape code when no style modifiers where applied. (#973)
This commit is contained in:
parent
b0f2224719
commit
24594c747e
@ -438,20 +438,26 @@ template <
|
|||||||
typename S, typename Char = typename internal::char_t<S>::type>
|
typename S, typename Char = typename internal::char_t<S>::type>
|
||||||
void vprint(std::FILE *f, const text_style &ts, const S &format,
|
void vprint(std::FILE *f, const text_style &ts, const S &format,
|
||||||
basic_format_args<typename buffer_context<Char>::type> args) {
|
basic_format_args<typename buffer_context<Char>::type> args) {
|
||||||
|
bool has_style = false;
|
||||||
if (ts.has_emphasis()) {
|
if (ts.has_emphasis()) {
|
||||||
|
has_style = true;
|
||||||
internal::fputs<Char>(
|
internal::fputs<Char>(
|
||||||
internal::make_emphasis<Char>(ts.get_emphasis()), f);
|
internal::make_emphasis<Char>(ts.get_emphasis()), f);
|
||||||
}
|
}
|
||||||
if (ts.has_foreground()) {
|
if (ts.has_foreground()) {
|
||||||
|
has_style = true;
|
||||||
internal::fputs<Char>(
|
internal::fputs<Char>(
|
||||||
internal::make_foreground_color<Char>(ts.get_foreground()), f);
|
internal::make_foreground_color<Char>(ts.get_foreground()), f);
|
||||||
}
|
}
|
||||||
if (ts.has_background()) {
|
if (ts.has_background()) {
|
||||||
|
has_style = true;
|
||||||
internal::fputs<Char>(
|
internal::fputs<Char>(
|
||||||
internal::make_background_color<Char>(ts.get_background()), f);
|
internal::make_background_color<Char>(ts.get_background()), f);
|
||||||
}
|
}
|
||||||
vprint(f, format, args);
|
vprint(f, format, args);
|
||||||
|
if (has_style) {
|
||||||
internal::reset_color<Char>(f);
|
internal::reset_color<Char>(f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -232,4 +232,5 @@ TEST(ColorsTest, Colors) {
|
|||||||
"\x1b[1mbold error\x1b[0m");
|
"\x1b[1mbold error\x1b[0m");
|
||||||
EXPECT_WRITE(stderr, fmt::print(stderr, fg(fmt::color::blue), "blue log"),
|
EXPECT_WRITE(stderr, fmt::print(stderr, fg(fmt::color::blue), "blue log"),
|
||||||
"\x1b[38;2;000;000;255mblue log\x1b[0m");
|
"\x1b[38;2;000;000;255mblue log\x1b[0m");
|
||||||
|
EXPECT_WRITE(stdout, fmt::print(fmt::text_style(), "hi"), "hi");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user