mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-07-07 20:06:36 +02:00
Enhancement - tags
- Added usage count to the tags report. - Filled in some missing details in ChangeLog. - Removed extraneous "srandom" call.
This commit is contained in:
parent
21c3a0ef48
commit
f588055b31
3 changed files with 37 additions and 16 deletions
|
@ -39,6 +39,7 @@
|
||||||
+ New, more flexible, more consistent, grep-able file format.
|
+ New, more flexible, more consistent, grep-able file format.
|
||||||
+ If task is renamed to "cal", or there is a symlink to task called "cal",
|
+ If task is renamed to "cal", or there is a symlink to task called "cal",
|
||||||
then task can act as a replacement for the Unix "cal" command.
|
then task can act as a replacement for the Unix "cal" command.
|
||||||
|
+ The "tags" report now shows the tag usage count.
|
||||||
|
|
||||||
Add:
|
Add:
|
||||||
att mods
|
att mods
|
||||||
|
@ -49,10 +50,15 @@ Add:
|
||||||
wait:
|
wait:
|
||||||
report.waiting
|
report.waiting
|
||||||
report.all
|
report.all
|
||||||
debug mode
|
|
||||||
new colorization support
|
new colorization support
|
||||||
many, many new unit tests
|
many, many new unit tests
|
||||||
|
|
||||||
|
+ Now supports a debug mode that can be used to generate helpful information
|
||||||
|
when reporting a problem. Just run the command with "task rc.debug:on ..."
|
||||||
|
and diagnostics will be generated that will help pinpoint a problem.
|
||||||
|
+ The new "undo" command replaces the old "undo" and "undelete" command
|
||||||
|
with a complete undo stack that can rollback all changes.
|
||||||
|
|
||||||
------ old releases ------------------------------
|
------ old releases ------------------------------
|
||||||
|
|
||||||
1.7.1 (6/8/2009)
|
1.7.1 (6/8/2009)
|
||||||
|
|
|
@ -87,13 +87,6 @@ void Context::initialize ()
|
||||||
{
|
{
|
||||||
Timer t ("Context::initialize");
|
Timer t ("Context::initialize");
|
||||||
|
|
||||||
// Set up randomness.
|
|
||||||
#ifdef HAVE_SRANDOM
|
|
||||||
srandom (time (NULL));
|
|
||||||
#else
|
|
||||||
srand (time (NULL));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Load the configuration file from the home directory. If the file cannot
|
// Load the configuration file from the home directory. If the file cannot
|
||||||
// be found, offer to create a sample one.
|
// be found, offer to create a sample one.
|
||||||
loadCorrectConfigFile ();
|
loadCorrectConfigFile ();
|
||||||
|
|
|
@ -137,7 +137,6 @@ std::string handleProjects ()
|
||||||
}
|
}
|
||||||
|
|
||||||
table.setColumnJustification (1, Table::right);
|
table.setColumnJustification (1, Table::right);
|
||||||
table.setDateFormat (context.config.get ("dateformat", "m/d/Y"));
|
|
||||||
|
|
||||||
foreach (i, unique)
|
foreach (i, unique)
|
||||||
{
|
{
|
||||||
|
@ -177,27 +176,50 @@ std::string handleTags ()
|
||||||
|
|
||||||
// Scan all the tasks for their project name, building a map using project
|
// Scan all the tasks for their project name, building a map using project
|
||||||
// names as keys.
|
// names as keys.
|
||||||
std::map <std::string, std::string> unique;
|
std::map <std::string, int> unique;
|
||||||
foreach (t, tasks)
|
foreach (t, tasks)
|
||||||
{
|
{
|
||||||
std::vector <std::string> tags;
|
std::vector <std::string> tags;
|
||||||
t->getTags (tags);
|
t->getTags (tags);
|
||||||
|
|
||||||
foreach (tag, tags)
|
foreach (tag, tags)
|
||||||
unique[*tag] = "";
|
if (unique.find (*tag) != unique.end ())
|
||||||
|
unique[*tag]++;
|
||||||
|
else
|
||||||
|
unique[*tag] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Render a list of tag names from the map.
|
|
||||||
out << optionalBlankLine ();
|
|
||||||
foreach (i, unique)
|
|
||||||
out << i->first << std::endl;
|
|
||||||
|
|
||||||
if (unique.size ())
|
if (unique.size ())
|
||||||
|
{
|
||||||
|
// Render a list of tags names from the map.
|
||||||
|
Table table;
|
||||||
|
table.addColumn ("Tag");
|
||||||
|
table.addColumn ("Count");
|
||||||
|
|
||||||
|
if (context.config.get ("color", true) ||
|
||||||
|
context.config.get (std::string ("_forcecolor"), false))
|
||||||
|
{
|
||||||
|
table.setColumnUnderline (0);
|
||||||
|
table.setColumnUnderline (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
table.setColumnJustification (1, Table::right);
|
||||||
|
|
||||||
|
foreach (i, unique)
|
||||||
|
{
|
||||||
|
int row = table.addRow ();
|
||||||
|
table.addCell (row, 0, i->first);
|
||||||
|
table.addCell (row, 1, i->second);
|
||||||
|
}
|
||||||
|
|
||||||
out << optionalBlankLine ()
|
out << optionalBlankLine ()
|
||||||
|
<< table.render ()
|
||||||
|
<< optionalBlankLine ()
|
||||||
<< unique.size ()
|
<< unique.size ()
|
||||||
<< (unique.size () == 1 ? " tag" : " tags")
|
<< (unique.size () == 1 ? " tag" : " tags")
|
||||||
<< " (" << quantity << (quantity == 1 ? " task" : " tasks") << ")"
|
<< " (" << quantity << (quantity == 1 ? " task" : " tasks") << ")"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
out << "No tags."
|
out << "No tags."
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue