Skip to content

v0.6

Compare
Choose a tag to compare
@hedning hedning released this 28 Nov 16:41
· 44 commits to master since this release

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 aliasing nix-env to nix-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.