v0.6
bash: v0.6, zsh: 0.3.6
The quest for an awesome completion system continues.
The main bulk of changes apply to both ZSH and Bash, with explicit notes otherwise.
-I/--include support
Attribute path completion now takes -I
and --include
into account. This makes completion work correctly when doing things like this:
nix-shell -I nixpkgs=. --packages <tab>
When the completion system executes any nix code it will first resolve all URLS in the NIX_PATH
, and in -I
input, to a local store path if present. This protects against triggering an intrusive download while completing. channel:
syntax is correctly translated to its https://
form and resolved to a cache too.
--arg and --argstr support
Argument names are now offered as completions using builtins.functionArgs
. Names already supplied on the command line is excluded from completions.
Attribute path completion will also take --arg and --argstr into account, which means things like this work:
nix-instantiate --eval default.nix --argstr bar foo -A <tab>
If the content of default.nix
is {bar}: {foo = bar;}
then completing will result in foo
.
--expr and -E support
Attribute path completion now works for --expr
input, including argument name completion.
Note, URLs in the expression body is not yet resolved to a local cache so might trigger a download. This should ideally be fixed.
In ZSH --expr
now behaves properly, allowing completion of options after it has been entered (bash already did the correct thing here).
Other small fixes and improvements
- Most arguments which expects a
.nix
file will now only offer up those and directories, reducing clutter --file
will now complete more than once, the last one being used to generate attribute matches. In ZSH this allows aliasingnix-env
tonix-env -f '<nixpkgs>'
while still getting further--file
completion which can be used to override the default.- nix-env now offer
--file
completion together with main operation completion by default. This is a compromise between discover-ability of main operations and the want to specify common options quickly. --add-root
will now off up/nix/var/nix/gcroots/
by default, if--indirect
is specified it will give normal directory completion.- Add missing
--help
and--version
completion to many commands - nix-env:
--filter-system
will complete possible systems. - nix-instantiate:
--find-file
will no longer offer misleading file completion
And a bunch of other small changes and fixes.