[PATCH] [raw_ostream] When printing color on Windows, use the existing foreground / background color.
Aaron Ballman
aaron.ballman at gmail.com
Sat Feb 28 09:31:34 PST 2015
LGTM, thank you for doing this!
~Aaron
On Fri, Feb 27, 2015 at 9:44 PM, Zachary Turner <zturner at google.com> wrote:
> Fixed a variable shadowing and removed unnecessary locals.
>
>
> http://reviews.llvm.org/D7967
>
> Files:
> lib/Support/Windows/Process.inc
>
> Index: lib/Support/Windows/Process.inc
> ===================================================================
> --- lib/Support/Windows/Process.inc
> +++ lib/Support/Windows/Process.inc
> @@ -329,6 +329,16 @@
> };
>
> DefaultColors defaultColors;
> +
> +WORD fg_color(WORD color) {
> + return color & (FOREGROUND_BLUE | FOREGROUND_GREEN |
> + FOREGROUND_INTENSITY | FOREGROUND_RED);
> +}
> +
> +WORD bg_color(WORD color) {
> + return color & (BACKGROUND_BLUE | BACKGROUND_GREEN |
> + BACKGROUND_INTENSITY | BACKGROUND_RED);
> +}
> }
>
> bool Process::ColorNeedsFlush() {
> @@ -350,6 +360,7 @@
> const char *Process::OutputColor(char code, bool bold, bool bg) {
> if (UseANSI) return colorcodes[bg?1:0][bold?1:0][code&7];
>
> + WORD current = DefaultColors::GetCurrentColor();
> WORD colors;
> if (bg) {
> colors = ((code&1) ? BACKGROUND_RED : 0) |
> @@ -357,12 +368,14 @@
> ((code&4) ? BACKGROUND_BLUE : 0);
> if (bold)
> colors |= BACKGROUND_INTENSITY;
> + colors |= fg_color(current);
> } else {
> colors = ((code&1) ? FOREGROUND_RED : 0) |
> ((code&2) ? FOREGROUND_GREEN : 0 ) |
> ((code&4) ? FOREGROUND_BLUE : 0);
> if (bold)
> colors |= FOREGROUND_INTENSITY;
> + colors |= bg_color(current);
> }
> SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), colors);
> return 0;
>
> EMAIL PREFERENCES
> http://reviews.llvm.org/settings/panel/emailpreferences/
More information about the llvm-commits
mailing list