mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
Context: Now obeys command DNA
- Applying a context filter is now performed only when a command requests it.
This commit is contained in:
parent
8d5a60a2a2
commit
758df84539
6 changed files with 14 additions and 11 deletions
|
@ -601,13 +601,16 @@ void CLI2::addContextFilter ()
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Parse the command line, identifiying filter components, expanding syntactic
|
||||
// sugar as necessary.
|
||||
void CLI2::prepareFilter (bool applyContext)
|
||||
void CLI2::prepareFilter ()
|
||||
{
|
||||
// Clear and re-populate.
|
||||
_id_ranges.clear ();
|
||||
_uuid_list.clear ();
|
||||
|
||||
if (applyContext)
|
||||
// Context is only applied for commands that request it.
|
||||
std::string command = getCommand ();
|
||||
Command* cmd = context.commands[command];
|
||||
if (cmd && cmd->uses_context ())
|
||||
addContextFilter ();
|
||||
|
||||
// Classify FILTER and MODIFICATION args, based on CMD and READCMD/WRITECMD.
|
||||
|
|
|
@ -77,7 +77,7 @@ public:
|
|||
void analyze ();
|
||||
void addFilter (const std::string& arg);
|
||||
void addContextFilter ();
|
||||
void prepareFilter (bool applyContext = true);
|
||||
void prepareFilter ();
|
||||
const std::vector <std::string> getWords (bool filtered = true);
|
||||
bool canonicalize (std::string&, const std::string&, const std::string&) const;
|
||||
std::string getBinary () const;
|
||||
|
|
|
@ -69,12 +69,12 @@ Filter::~Filter ()
|
|||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Take an input set of tasks and filter into a subset.
|
||||
void Filter::subset (const std::vector <Task>& input, std::vector <Task>& output, bool applyContext /* = true */)
|
||||
void Filter::subset (const std::vector <Task>& input, std::vector <Task>& output)
|
||||
{
|
||||
context.timer_filter.start ();
|
||||
_startCount = (int) input.size ();
|
||||
|
||||
context.cli2.prepareFilter (applyContext);
|
||||
context.cli2.prepareFilter ();
|
||||
|
||||
std::vector <std::pair <std::string, Lexer::Type>> precompiled;
|
||||
for (auto& a : context.cli2._args)
|
||||
|
@ -115,11 +115,11 @@ void Filter::subset (const std::vector <Task>& input, std::vector <Task>& output
|
|||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Take the set of all tasks and filter into a subset.
|
||||
void Filter::subset (std::vector <Task>& output, bool applyContext /* = true */)
|
||||
void Filter::subset (std::vector <Task>& output)
|
||||
{
|
||||
context.timer_filter.start ();
|
||||
|
||||
context.cli2.prepareFilter (applyContext);
|
||||
context.cli2.prepareFilter ();
|
||||
|
||||
std::vector <std::pair <std::string, Lexer::Type>> precompiled;
|
||||
for (auto& a : context.cli2._args)
|
||||
|
|
|
@ -40,8 +40,8 @@ public:
|
|||
Filter ();
|
||||
~Filter ();
|
||||
|
||||
void subset (const std::vector <Task>&, std::vector <Task>&, bool applyContext = true);
|
||||
void subset (std::vector <Task>&, bool applyContext = true);
|
||||
void subset (const std::vector <Task>&, std::vector <Task>&);
|
||||
void subset (std::vector <Task>&);
|
||||
bool hasFilter ();
|
||||
bool hasModifications ();
|
||||
bool pendingOnly ();
|
||||
|
|
|
@ -60,7 +60,7 @@ int CmdExport::execute (std::string& output)
|
|||
// Apply filter.
|
||||
Filter filter;
|
||||
std::vector <Task> filtered;
|
||||
filter.subset (filtered, false);
|
||||
filter.subset (filtered);
|
||||
|
||||
if (filter.hasModifications ())
|
||||
throw std::string (STRING_ERROR_NO_MODS);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue