diff --git a/src/Context.cpp b/src/Context.cpp index 898e41c5a..535c1bd00 100644 --- a/src/Context.cpp +++ b/src/Context.cpp @@ -65,6 +65,33 @@ static const char* modifierNames[] = #define NUM_MODIFIER_NAMES (sizeof (modifierNames) / sizeof (modifierNames[0])) +static const char* attributeNames[] = +{ + "depends", + "description", + "due", + "end", + "entry", + "id", + "imask", + "mask", + "modified", + "parent", + "priority", + "project", + "recur", + "scheduled", + "start", + "status", + "tags", + "until", + "urgency", + "uuid", + "wait" +}; + +#define NUM_ATTRIBUTE_NAMES (sizeof (attributeNames) / sizeof (attributeNames[0])) + //////////////////////////////////////////////////////////////////////////////// Context::Context () : rc_file () @@ -213,6 +240,8 @@ int Context::initialize (int argc, const char** argv) // Instantiate built-in column objects. Column::factory (columns); + + // Extend the fixed list of attribute names with any dynamic ones. std::map ::iterator col; for (col = columns.begin (); col != columns.end (); ++col) { @@ -661,6 +690,13 @@ void Context::setupEntities () parser.entity ("pseudo", "limit"); cli.entity ("pseudo", "limit"); + // Entities: Attributes. + for (unsigned int i = 0; i < NUM_ATTRIBUTE_NAMES; ++i) + { + parser.entity ("attribute", attributeNames[i]); + cli.entity ("attribute", attributeNames[i]); + } + // Entities: Modifiers. for (unsigned int i = 0; i < NUM_MODIFIER_NAMES; ++i) {