mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-07-07 20:06:36 +02:00
Merge branch '2.4.0' of ssh://git.tasktools.org/tm/task into 2.4.0
This commit is contained in:
commit
62725c97e4
3 changed files with 16 additions and 55 deletions
|
@ -309,32 +309,23 @@ void Parser::collect (
|
||||||
if (tree == NULL)
|
if (tree == NULL)
|
||||||
tree = _tree;
|
tree = _tree;
|
||||||
|
|
||||||
|
if (type == collectAll || tree->_branches.size () == 0)
|
||||||
|
nodes.push_back (tree);
|
||||||
|
|
||||||
std::vector <Tree*>::iterator i;
|
std::vector <Tree*>::iterator i;
|
||||||
for (i = tree->_branches.begin (); i != tree->_branches.end (); ++i)
|
for (i = tree->_branches.begin (); i != tree->_branches.end (); ++i)
|
||||||
{
|
{
|
||||||
if ((*i)->_branches.size ())
|
if (type == collectLeaf)
|
||||||
{
|
{
|
||||||
if (type == collectAll)
|
if ((*i)->hasTag ("TERMINATOR") ||
|
||||||
nodes.push_back (*i);
|
(*i)->hasTag ("TERMINATED"))
|
||||||
|
break;
|
||||||
|
|
||||||
collect (nodes, type, *i);
|
if (! (*i)->hasTag ("?"))
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
if (type == collectLeaf)
|
|
||||||
{
|
|
||||||
// Parser override operator.
|
|
||||||
if ((*i)->hasTag ("TERMINATOR") ||
|
|
||||||
(*i)->hasTag ("TERMINATED"))
|
|
||||||
break;
|
|
||||||
|
|
||||||
// Skip known args.
|
collect (nodes, type, *i);
|
||||||
if (! (*i)->hasTag ("?"))
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
nodes.push_back (*i);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -789,7 +780,7 @@ const std::vector <std::string> Parser::getWords () const
|
||||||
{
|
{
|
||||||
std::vector <std::string> words;
|
std::vector <std::string> words;
|
||||||
std::vector <Tree*> nodes;
|
std::vector <Tree*> nodes;
|
||||||
collect (nodes, collectTerminated);
|
collect (nodes, collectAll);
|
||||||
std::vector <Tree*>::iterator i;
|
std::vector <Tree*>::iterator i;
|
||||||
for (i = nodes.begin (); i != nodes.end (); ++i)
|
for (i = nodes.begin (); i != nodes.end (); ++i)
|
||||||
{
|
{
|
||||||
|
@ -1585,7 +1576,6 @@ void Parser::findModifications ()
|
||||||
{
|
{
|
||||||
context.debug ("Parser::findModifications");
|
context.debug ("Parser::findModifications");
|
||||||
bool action = false;
|
bool action = false;
|
||||||
|
|
||||||
bool after_writecmd = false;
|
bool after_writecmd = false;
|
||||||
|
|
||||||
std::vector <Tree*> nodes;
|
std::vector <Tree*> nodes;
|
||||||
|
@ -1594,9 +1584,10 @@ void Parser::findModifications ()
|
||||||
for (i = nodes.begin (); i != nodes.end (); ++i)
|
for (i = nodes.begin (); i != nodes.end (); ++i)
|
||||||
{
|
{
|
||||||
if ((*i)->hasTag ("WRITECMD"))
|
if ((*i)->hasTag ("WRITECMD"))
|
||||||
|
{
|
||||||
after_writecmd = true;
|
after_writecmd = true;
|
||||||
|
}
|
||||||
if (after_writecmd &&
|
else if (after_writecmd &&
|
||||||
! (*i)->hasTag ("CMD") &&
|
! (*i)->hasTag ("CMD") &&
|
||||||
! (*i)->hasTag ("TERMINATOR") &&
|
! (*i)->hasTag ("TERMINATOR") &&
|
||||||
! (*i)->hasTag ("BINARY") &&
|
! (*i)->hasTag ("BINARY") &&
|
||||||
|
|
|
@ -273,7 +273,8 @@ void Tree::dumpNode (Tree* t, int depth, std::stringstream& output)
|
||||||
for (int i = 0; i < depth; ++i)
|
for (int i = 0; i < depth; ++i)
|
||||||
output << " ";
|
output << " ";
|
||||||
|
|
||||||
output << "\033[1m" << t->_name << "\033[0m";
|
output << std::hex << t << " "
|
||||||
|
<< "\033[1m" << t->_name << "\033[0m";
|
||||||
|
|
||||||
// Dump attributes.
|
// Dump attributes.
|
||||||
std::string atts;
|
std::string atts;
|
||||||
|
|
|
@ -441,7 +441,6 @@ int CmdInfo::execute (std::string& output)
|
||||||
std::string previous;
|
std::string previous;
|
||||||
std::string current;
|
std::string current;
|
||||||
unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
long total_time = 0;
|
|
||||||
long last_timestamp = 0;
|
long last_timestamp = 0;
|
||||||
while (i < undo.size ())
|
while (i < undo.size ())
|
||||||
{
|
{
|
||||||
|
@ -465,39 +464,9 @@ int CmdInfo::execute (std::string& output)
|
||||||
Task before (previous.substr (4));
|
Task before (previous.substr (4));
|
||||||
Task after (current.substr (4));
|
Task after (current.substr (4));
|
||||||
journal.set (row, 1, taskInfoDifferences (before, after, dateformat, last_timestamp, timestamp.toEpoch()));
|
journal.set (row, 1, taskInfoDifferences (before, after, dateformat, last_timestamp, timestamp.toEpoch()));
|
||||||
|
|
||||||
// calculate the total active time
|
|
||||||
if (before.get ("start") == ""
|
|
||||||
&& after.get ("start") != "")
|
|
||||||
{
|
|
||||||
// task started
|
|
||||||
total_time -= timestamp.toEpoch ();
|
|
||||||
}
|
|
||||||
else if (((before.get ("start") != "" &&
|
|
||||||
after.get ("start") == "") ||
|
|
||||||
(before.get ("status") != "completed" &&
|
|
||||||
after.get ("status") == "completed")) &&
|
|
||||||
total_time < 0)
|
|
||||||
{
|
|
||||||
// task stopped or done
|
|
||||||
total_time += timestamp.toEpoch ();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// add now() if task is still active
|
|
||||||
if (total_time < 0)
|
|
||||||
total_time += Date ().toEpoch ();
|
|
||||||
|
|
||||||
// print total active time
|
|
||||||
if (total_time > 0)
|
|
||||||
{
|
|
||||||
row = journal.addRow ();
|
|
||||||
journal.set (row, 0, STRING_CMD_INFO_TOTAL_ACTIVE);
|
|
||||||
journal.set (row, 1, Duration (total_time).formatPrecise (),
|
|
||||||
(context.color () ? Color ("bold") : Color ()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
out << optionalBlankLine ()
|
out << optionalBlankLine ()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue