diff --git a/src/CLI2.cpp b/src/CLI2.cpp index 1fadb611b..fbef416f6 100644 --- a/src/CLI2.cpp +++ b/src/CLI2.cpp @@ -604,9 +604,10 @@ void CLI2::addContext (bool readable, bool writeable) // Detect if any context is set, and bail out if not std::string contextString; if (readable) - contextString = Context::getContext ().getTaskContext("read"); + // Empty string is treated as "currently selected context" + contextString = Context::getContext ().getTaskContext("read", ""); else if (writeable) - contextString = Context::getContext ().getTaskContext("write"); + contextString = Context::getContext ().getTaskContext("write", ""); else return; diff --git a/src/Context.cpp b/src/Context.cpp index 7252e01e7..b56aae3ed 100644 --- a/src/Context.cpp +++ b/src/Context.cpp @@ -923,12 +923,15 @@ int Context::getHeight () } //////////////////////////////////////////////////////////////////////////////// -std::string Context::getTaskContext (const std::string& kind, bool fallback /* = true */) +std::string Context::getTaskContext (const std::string& kind, std::string name, bool fallback /* = true */) { + // Consider currently selected context, if none specified + if (name.empty ()) + name = config.get ("context"); + // Detect if any context is set, and bail out if not - std::string contextName = config.get ("context"); - if (! contextName.empty ()) - debug (format ("Applying context '{1}'", contextName)); + if (! name.empty ()) + debug (format ("Applying context '{1}'", name)); else { debug ("No context set"); @@ -936,14 +939,14 @@ std::string Context::getTaskContext (const std::string& kind, bool fallback /* = } // Figure out the context string for this kind (read/write) - std::string contextString = config.get ("context." + contextName + "." + kind); + std::string contextString = config.get ("context." + name + "." + kind); if (contextString.empty ()) { - debug ("Specific " + kind + " context for '" + contextName + "' not defined. "); + debug ("Specific " + kind + " context for '" + name + "' not defined. "); if (fallback) { debug ("Falling back on generic."); - contextString = config.get ("context." + contextName); + contextString = config.get ("context." + name); } } diff --git a/src/Context.h b/src/Context.h index 0711b7367..a2825bb78 100644 --- a/src/Context.h +++ b/src/Context.h @@ -57,7 +57,7 @@ public: int getWidth (); // determine terminal width int getHeight (); // determine terminal height - std::string getTaskContext (const std::string&, bool fallback=true); + std::string getTaskContext (const std::string&, std::string, bool fallback=true); const std::vector getColumns () const; void getLimits (int&, int&);