diff options
author | Martin Liska <mliska@suse.cz> | 2017-10-31 12:57:10 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2017-10-31 11:57:10 +0000 |
commit | 28f4a4a85f3b95f7ccf7585eaa5cbd50cbe1677d (patch) | |
tree | 1cf4d862d50b7877bf04bb3a8fec394f9b192782 /gcc/diagnostic-color.c | |
parent | 00da60d4def3782039bef86fbdf07fd620d8b57a (diff) | |
download | gcc-28f4a4a85f3b95f7ccf7585eaa5cbd50cbe1677d.tar.gz |
GCOV: introduce usage of terminal colors.
2017-10-31 Martin Liska <mliska@suse.cz>
* color-macros.h: New file.
* diagnostic-color.c: Factor out color related to macros to
color-macros.h.
* doc/gcov.texi: Document -k option.
* gcov.c (INCLUDE_STRING): Include string.h.
(print_usage): Add -k option.
(process_args): Parse it.
(pad_count_string): New function.
(output_line_beginning): Likewise.
(DEFAULT_LINE_START): New macro.
(output_lines): Support color output.
From-SVN: r254258
Diffstat (limited to 'gcc/diagnostic-color.c')
-rw-r--r-- | gcc/diagnostic-color.c | 85 |
1 files changed, 1 insertions, 84 deletions
diff --git a/gcc/diagnostic-color.c b/gcc/diagnostic-color.c index b8cf6f2c045..ccbae4ba223 100644 --- a/gcc/diagnostic-color.c +++ b/gcc/diagnostic-color.c @@ -24,90 +24,7 @@ # include <windows.h> #endif -/* Select Graphic Rendition (SGR, "\33[...m") strings. */ -/* Also Erase in Line (EL) to Right ("\33[K") by default. */ -/* Why have EL to Right after SGR? - -- The behavior of line-wrapping when at the bottom of the - terminal screen and at the end of the current line is often - such that a new line is introduced, entirely cleared with - the current background color which may be different from the - default one (see the boolean back_color_erase terminfo(5) - capability), thus scrolling the display by one line. - The end of this new line will stay in this background color - even after reverting to the default background color with - "\33[m', unless it is explicitly cleared again with "\33[K" - (which is the behavior the user would instinctively expect - from the whole thing). There may be some unavoidable - background-color flicker at the end of this new line because - of this (when timing with the monitor's redraw is just right). - -- The behavior of HT (tab, "\t") is usually the same as that of - Cursor Forward Tabulation (CHT) with a default parameter - of 1 ("\33[I"), i.e., it performs pure movement to the next - tab stop, without any clearing of either content or screen - attributes (including background color); try - printf 'asdfqwerzxcv\rASDF\tZXCV\n' - in a bash(1) shell to demonstrate this. This is not what the - user would instinctively expect of HT (but is ok for CHT). - The instinctive behavior would include clearing the terminal - cells that are skipped over by HT with blank cells in the - current screen attributes, including background color; - the boolean dest_tabs_magic_smso terminfo(5) capability - indicates this saner behavior for HT, but only some rare - terminals have it (although it also indicates a special - glitch with standout mode in the Teleray terminal for which - it was initially introduced). The remedy is to add "\33K" - after each SGR sequence, be it START (to fix the behavior - of any HT after that before another SGR) or END (to fix the - behavior of an HT in default background color that would - follow a line-wrapping at the bottom of the screen in another - background color, and to complement doing it after START). - Piping GCC's output through a pager such as less(1) avoids - any HT problems since the pager performs tab expansion. - - Generic disadvantages of this remedy are: - -- Some very rare terminals might support SGR but not EL (nobody - will use "gcc -fdiagnostics-color" on a terminal that does not - support SGR in the first place). - -- Having these extra control sequences might somewhat complicate - the task of any program trying to parse "gcc -fdiagnostics-color" - output in order to extract structuring information from it. - A specific disadvantage to doing it after SGR START is: - -- Even more possible background color flicker (when timing - with the monitor's redraw is just right), even when not at the - bottom of the screen. - There are no additional disadvantages specific to doing it after - SGR END. - - It would be impractical for GCC to become a full-fledged - terminal program linked against ncurses or the like, so it will - not detect terminfo(5) capabilities. */ -#define COLOR_SEPARATOR ";" -#define COLOR_NONE "00" -#define COLOR_BOLD "01" -#define COLOR_UNDERSCORE "04" -#define COLOR_BLINK "05" -#define COLOR_REVERSE "07" -#define COLOR_FG_BLACK "30" -#define COLOR_FG_RED "31" -#define COLOR_FG_GREEN "32" -#define COLOR_FG_YELLOW "33" -#define COLOR_FG_BLUE "34" -#define COLOR_FG_MAGENTA "35" -#define COLOR_FG_CYAN "36" -#define COLOR_FG_WHITE "37" -#define COLOR_BG_BLACK "40" -#define COLOR_BG_RED "41" -#define COLOR_BG_GREEN "42" -#define COLOR_BG_YELLOW "43" -#define COLOR_BG_BLUE "44" -#define COLOR_BG_MAGENTA "45" -#define COLOR_BG_CYAN "46" -#define COLOR_BG_WHITE "47" -#define SGR_START "\33[" -#define SGR_END "m\33[K" -#define SGR_SEQ(str) SGR_START str SGR_END -#define SGR_RESET SGR_SEQ("") - +#include "color-macros.h" /* The context and logic for choosing default --color screen attributes (foreground and background colors, etc.) are the following. |