From e0a808a6ba1b986d0b0b3c23c77c830d289175dd Mon Sep 17 00:00:00 2001 From: Tomas Babej Date: Sun, 6 Sep 2015 01:08:14 +0200 Subject: [PATCH] commands: Colorize only if color=on is set Commands 'columns', 'commands' and 'custom' would output color escape sequences desipte color=off being set. --- ChangeLog | 2 ++ src/commands/CmdColumns.cpp | 13 ++++++++----- src/commands/CmdCommands.cpp | 13 ++++++++----- src/commands/CmdCustom.cpp | 21 ++++++++++++++------- 4 files changed, 32 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 369ea7e2e..79a3468b2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -123,6 +123,8 @@ (thanks to Leon Feng). - TW-1647 descriptions that are stringified ids (thanks to Daniel Shahaf). - TW-1648 Typo in Documentation (thanks to Simon W. Jackson). +- TW-1649 'columns' colorizes output when stdout is a pipe (thanks to Daniel + Shahaf). - TW-1651 Provide opt-out of filter parser's id treatment (thanks to Daniel Shahaf). - TW-1652 task rm misparsed (thanks to Daniel Shahaf). diff --git a/src/commands/CmdColumns.cpp b/src/commands/CmdColumns.cpp index 7b0b00641..cd4d43f6b 100644 --- a/src/commands/CmdColumns.cpp +++ b/src/commands/CmdColumns.cpp @@ -76,12 +76,15 @@ int CmdColumns::execute (std::string& output) formats.add (Column::factory ("string", STRING_COLUMN_LABEL_STYLES)); formats.add (Column::factory ("string", STRING_COLUMN_LABEL_EXAMPLES)); - Color label (context.config.get ("color.label")); - formats.colorHeader (label); + if (context.color ()) + { + Color label (context.config.get ("color.label")); + formats.colorHeader (label); - Color alternate (context.config.get ("color.alternate")); - formats.colorOdd (alternate); - formats.intraColorOdd (alternate); + Color alternate (context.config.get ("color.alternate")); + formats.colorOdd (alternate); + formats.intraColorOdd (alternate); + } for (auto& name : names) { diff --git a/src/commands/CmdCommands.cpp b/src/commands/CmdCommands.cpp index 98d5d1565..9034503a9 100644 --- a/src/commands/CmdCommands.cpp +++ b/src/commands/CmdCommands.cpp @@ -70,12 +70,15 @@ int CmdCommands::execute (std::string& output) view.add (Column::factory ("string.right", STRING_COLUMN_LABEL_MISC)); view.add (Column::factory ("string.left", STRING_COLUMN_LABEL_DESC)); - Color label (context.config.get ("color.label")); - view.colorHeader (label); + if (context.color ()) + { + Color label (context.config.get ("color.label")); + view.colorHeader (label); - Color alternate (context.config.get ("color.alternate")); - view.colorOdd (alternate); - view.intraColorOdd (alternate); + Color alternate (context.config.get ("color.alternate")); + view.colorOdd (alternate); + view.intraColorOdd (alternate); + } view.leftMargin (context.config.getInteger ("indent.report")); view.extraPadding (context.config.getInteger ("row.padding")); diff --git a/src/commands/CmdCustom.cpp b/src/commands/CmdCustom.cpp index 79aa47b50..df9703c1b 100644 --- a/src/commands/CmdCustom.cpp +++ b/src/commands/CmdCustom.cpp @@ -129,15 +129,22 @@ int CmdCustom::execute (std::string& output) view.extraPadding (context.config.getInteger ("row.padding")); view.intraPadding (context.config.getInteger ("column.padding")); - Color label (context.config.get ("color.label")); - view.colorHeader (label); + if (context.color ()) + { + Color label (context.config.get ("color.label")); + view.colorHeader (label); - Color label_sort (context.config.get ("color.label.sort")); - view.colorSortHeader (label_sort); + Color label_sort (context.config.get ("color.label.sort")); + view.colorSortHeader (label_sort); - Color alternate (context.config.get ("color.alternate")); - view.colorOdd (alternate); - view.intraColorOdd (alternate); + // If an alternating row color is specified, notify the table. + Color alternate (context.config.get ("color.alternate")); + if (alternate.nontrivial ()) + { + view.colorOdd (alternate); + view.intraColorOdd (alternate); + } + } // Capture columns that are sorted. std::vector sortColumns;