- if (name == "?")
- throw invalidParam(bformat(
- _("Available listing parameters are %1$s"), from_ascii(all_param_names_)));
-
+ if (name[0] == '?') {
+ string suffix = trim(string(name, 1));
+ string param_names;
+ ListingsParams::const_iterator it = all_params_.begin();
+ ListingsParams::const_iterator end = all_params_.end();
+ for (; it != end; ++it) {
+ if (suffix.empty() || contains(it->first, suffix)) {
+ if (!param_names.empty())
+ param_names += ", ";
+ param_names += it->first;
+ }
+ }
+ if (suffix.empty())
+ throw invalidParam(bformat(
+ _("Available listing parameters are %1$s"), from_ascii(param_names)));
+ else
+ throw invalidParam(bformat(
+ _("Available listings parameters containing string \"%1$s\" are %2$s"),
+ from_utf8(suffix), from_utf8(param_names)));
+ }
+