diff --git a/ChangeLog b/ChangeLog index 1692c9757..9e4023bb3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -78,6 +78,7 @@ if a context is active (thanks to Johannes Schlatow). - TW-1600 Filtering "regressions"(?) in task-2.4.3, task-2.4.4 (thanks to Ralph Bean). +- TW-1607 Theme Support for missing UDAs (thanks to Stefan Betz). - TW-1609 In 'urgency<10', 10 is interpreted as an ID (thanks to Wim Schuermann). - TW-1611 soww weirdness (thanks to Wim Schuermann). - TW-1612 Spurious whitespace added in task descriptions around certain symbols diff --git a/NEWS b/NEWS index 3b9941326..9625fd8b4 100644 --- a/NEWS +++ b/NEWS @@ -17,6 +17,8 @@ New configuration options in Taskwarrior 2.4.5 - The 'json.depends.array' setting controls whether dependencies are exported as a JSON array, of a comma-separated string. Default is 'on'. Both variations are imported. + - The 'color.uda..none' is a color that is applieѕ to tasks that do + not have a value for the UDA ''. Newly deprecated features in Taskwarrior 2.4.5 diff --git a/doc/man/taskrc.5.in b/doc/man/taskrc.5.in index a8dca4c1e..76c9aa8e3 100644 --- a/doc/man/taskrc.5.in +++ b/doc/man/taskrc.5.in @@ -911,6 +911,11 @@ Colors any task that has the user defined attribute X. Colors any task that has the user defined attribute X set to VALUE. .RE +.TP +.B color.uda.X.none=on green +Colors any task that does not have the user defined attribute X. +.RE + .TP .B color.error=green Colors any of the error messages. diff --git a/src/rules.cpp b/src/rules.cpp index 2291e40a6..39e2d001b 100644 --- a/src/rules.cpp +++ b/src/rules.cpp @@ -197,7 +197,7 @@ static void colorizeKeyword (Task& task, const std::string& rule, const Color& b //////////////////////////////////////////////////////////////////////////////// static void colorizeUDA (Task& task, const std::string& rule, const Color& base, Color& c) { - // Is the rule uda.name.value or uda.name? + // Is the rule color.uda.name.value or color.uda.name? size_t pos = rule.find (".", 10); if (pos == std::string::npos) { @@ -208,7 +208,9 @@ static void colorizeUDA (Task& task, const std::string& rule, const Color& base, { const std::string uda = rule.substr (10, pos - 10); const std::string val = rule.substr (pos + 1); - if (task.get (uda) == val) + if (val == "none" && ! task.has (uda)) + c.blend (base); + else if (task.get (uda) == val) c.blend (base); } }