nix-zsh-completions icon indicating copy to clipboard operation
nix-zsh-completions copied to clipboard

Nix completion breaks prompt

Open bobvanderlinden opened this issue 1 year ago • 2 comments

Description

I have a very strange issue. I'm not sure whether nix-zsh-completion is at fault here, I expect something else on my system is causing problems, but I have ruled out most that I have thought of and am at a loss.

The problem is, when I use completion like:

bob.vanderlinden@NVC3919:~/ > nix <tab>

It will clear the whole line, including the prompt.

When I do:

bob.vanderlinden@NVC3919:~/ > nix --<tab>

It'll again clear the line, including the prompt, but it will show:

store

When I do:

bob.vanderlinden@NVC3919:~/ > nix build <tab>

It'll clear the line and show:

--store

I am very confused by this behavior. I have tried removing my ~/.zsh{rc,env,_history}, but to no avail.

Bash completion for nix <tab> works fine. Zsh completion for nix<tab> also works fine. Same for nix-build <tab>. It is specifically completion for the nix cli itself that's failing it seems.

Any idea what steps I can take to further investigate this issue?

System

  • nix-zsh-completions version: 0.4.4

  • ZSH version: 5.9

  • NIX_PATH: /home/bob.vanderlinden/.nix-defexpr/channels:nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels

  • system: "x86_64-linux"

  • host os: Linux 5.15.77, NixOS, 22.11 (Raccoon), 22.11.20221109.872fcee

  • multi-user?: yes

  • sandbox: yes

  • version: nix-env (Nix) 2.11.0

  • channels(root): "nixos-21.03pre268835.8c8731330b5"

  • channels(bob.vanderlinden): "home-manager, nixpkgs"

  • nixpkgs: /home/bob.vanderlinden/.nix-defexpr/channels/nixpkgs

Completion trace

I have generated the trace using:

nix <Ctrl+x ?>

https://gist.github.com/bobvanderlinden/7e7dcfac986662085f2751b942f13192

bobvanderlinden avatar Nov 14 '22 21:11 bobvanderlinden

I have the same problem with nix command completion.

coot avatar Nov 22 '22 07:11 coot

I think this is caused by the fact that nix 2.4+ has ANSI escape sequences in its --help output. The completion function parses the output and the escape sequences confuse it. As this repo seems inactive, I proposed to remove the completion function in nixpkgs (see the link above). nix offers its own zsh completion, which works well.

wentasah avatar Nov 24 '22 23:11 wentasah

I've forked the repo and simply deleted _nix. This seems to work for me. See https://github.com/bryango/nix-zsh-completions and the commit https://github.com/bryango/nix-zsh-completions/commit/c0c04022c9ac44af645ed769786d2303d0fb3ac4 therein.

bryango avatar Jan 03 '23 15:01 bryango