Show derivations more concisely

This commit is contained in:
Eelco Dolstra 2014-01-28 10:40:02 +01:00
parent 81d658fe4a
commit 3beb6f6e76

View file

@ -489,10 +489,18 @@ std::ostream & NixRepl::printValue(std::ostream & str, Value & v, unsigned int m
seen.insert(&v); seen.insert(&v);
bool isDrv = state.isDerivation(v); bool isDrv = state.isDerivation(v);
if (isDrv) str << "(derivation ";
if (isDrv) {
str << "«derivation ";
Bindings::iterator i = v.attrs->find(state.sDrvPath);
PathSet context;
Path drvPath = i != v.attrs->end() ? state.coerceToPath(*i->value, context) : "???";
str << drvPath << "»";
}
else if (maxDepth > 0) {
str << "{ "; str << "{ ";
if (maxDepth > 0) {
typedef std::map<string, Value *> Sorted; typedef std::map<string, Value *> Sorted;
Sorted sorted; Sorted sorted;
foreach (Bindings::iterator, i, *v.attrs) foreach (Bindings::iterator, i, *v.attrs)
@ -528,11 +536,10 @@ std::ostream & NixRepl::printValue(std::ostream & str, Value & v, unsigned int m
str << "; "; str << "; ";
} }
} else
str << "... ";
str << "}"; str << "}";
if (isDrv) str << ")"; } else
str << "{ ... }";
break; break;
} }