diff --git a/src/Context.cpp b/src/Context.cpp index 586c0bb4a..898e41c5a 100644 --- a/src/Context.cpp +++ b/src/Context.cpp @@ -103,6 +103,9 @@ int Context::initialize (int argc, const char** argv) // Assume default .taskrc and .task locations. assumeLocations (); + // The parser needs all the help it can get. + setupEntities (); + // Initialize the command line parser. program = (argc ? argv[0] : "task"); @@ -217,27 +220,6 @@ int Context::initialize (int argc, const char** argv) cli.entity ("attribute", col->first); } - // Entities: Pseudo-attributes. Hard-coded. - parser.entity ("pseudo", "limit"); - cli.entity ("pseudo", "limit"); - - // Entities: Modifiers. - for (unsigned int i = 0; i < NUM_MODIFIER_NAMES; ++i) - { - parser.entity ("modifier", modifierNames[i]); - cli.entity ("modifier", modifierNames[i]); - } - - // Entities: Operators. - std::vector operators; - Eval::getOperators (operators); - std::vector ::iterator op; - for (op = operators.begin (); op != operators.end (); ++op) - { - parser.entity ("operator", *op); - cli.entity ("operator", *op); - } - // Now the entities are loaded, parsing may resume. parser.findBinary (); // parser.resolveAliases (); @@ -672,6 +654,31 @@ void Context::assumeLocations () data_dir = Directory ("~/.task"); } +//////////////////////////////////////////////////////////////////////////////// +void Context::setupEntities () +{ + // Entities: Pseudo-attributes. Hard-coded. + parser.entity ("pseudo", "limit"); + cli.entity ("pseudo", "limit"); + + // Entities: Modifiers. + for (unsigned int i = 0; i < NUM_MODIFIER_NAMES; ++i) + { + parser.entity ("modifier", modifierNames[i]); + cli.entity ("modifier", modifierNames[i]); + } + + // Entities: Operators. + std::vector operators; + Eval::getOperators (operators); + std::vector ::iterator op; + for (op = operators.begin (); op != operators.end (); ++op) + { + parser.entity ("operator", *op); + cli.entity ("operator", *op); + } +} + //////////////////////////////////////////////////////////////////////////////// void Context::createDefaultConfig () { diff --git a/src/Context.h b/src/Context.h index eb34f97a4..d38d0c25a 100644 --- a/src/Context.h +++ b/src/Context.h @@ -76,6 +76,7 @@ public: private: void staticInitialization (); void assumeLocations (); + void setupEntities (); void createDefaultConfig (); void updateXtermTitle (); void updateVerbosity ();