forked from lix-project/lix
eldritch horrors
512c1f05c3
Previously, there were two mostly-identical value printers -- one in
`libexpr/eval.cc` (which didn't force values) and one in
`libcmd/repl.cc` (which did force values and also printed ANSI color
codes).
This PR unifies both of these printers into `print.cc` and provides a
`PrintOptions` struct for controlling the output, which allows for
toggling whether values are forced, whether repeated values are tracked,
and whether ANSI color codes are displayed.
Additionally, `PrintOptions` allows tuning the maximum number of
attributes, list items, and bytes in a string that will be displayed;
this makes it ideal for contexts where printing too much output (e.g.
all of Nixpkgs) is distracting. (As requested by @roberth in
https://github.com/NixOS/nix/pull/9554#issuecomment-1845095735)
Please read the tests for example output.
Future work:
- It would be nice to provide this function as a builtin, perhaps
`builtins.toStringDebug` -- a printing function that never fails would
be useful when debugging Nix code.
- It would be nice to support customizing `PrintOptions` members on the
command line, e.g. `--option to-string-max-attrs 1000`.
(cherry picked from commit 0fa08b451682fb3311fe58112ff05c4fe5bee3a4, )
===
Restore ambiguous value printer for `nix-instantiate`
The Nix team has requested that this output format remain unchanged.
I've added a warning to the man page explaining that `nix-instantiate
--eval` output will not parse correctly in many situations.
(cherry picked from commit df84dd4d8dd3fd6381ac2ca3064432ab31a16b79)
Change-Id:
|
||
---|---|---|
.. | ||
built-path.cc | ||
built-path.hh | ||
command-installable-value.cc | ||
command-installable-value.hh | ||
command.cc | ||
command.hh | ||
common-eval-args.cc | ||
common-eval-args.hh | ||
editor-for.cc | ||
editor-for.hh | ||
installable-attr-path.cc | ||
installable-attr-path.hh | ||
installable-derived-path.cc | ||
installable-derived-path.hh | ||
installable-flake.cc | ||
installable-flake.hh | ||
installable-value.cc | ||
installable-value.hh | ||
installables.cc | ||
installables.hh | ||
legacy.cc | ||
legacy.hh | ||
local.mk | ||
markdown.cc | ||
markdown.hh | ||
nix-cmd.pc.in | ||
repl.cc | ||
repl.hh |