Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Typer CLI and Packages not auto-completing #180

Closed
4 tasks done
theFong opened this issue Oct 21, 2020 · 8 comments · Fixed by #237
Closed
4 tasks done

[BUG] Typer CLI and Packages not auto-completing #180

theFong opened this issue Oct 21, 2020 · 8 comments · Fixed by #237
Labels
bug Something isn't working shell / zsh

Comments

@theFong
Copy link

theFong commented Oct 21, 2020

First check

  • I used the GitHub search to find a similar issue and didn't find it.
  • I searched the Typer documentation, with the integrated search.
  • I already searched in Google "How to X in Typer" and didn't find any information.
  • I already searched in Google "How to X in Click" and didn't find any information.

Description

I have built a CLI with with Typer and have been really enjoying using this library. I am looking to setup the auto complete feature but have run into something unexpected. When installing my package, running --install-completion, and restarting the terminal it would "auto complete" to files/dirs in my current directory (not expected behavior). To test whether there was something mis-configured on my end I tested the auto complete or the Typer CLI by running typer --[TAB][TAB] which did not auto complete to anything.

I'm not sure if there is something wrong with my environment, Typer CLI, my code, or misunderstanding how auto-completion works.

Additional context

I am on OSX and have noticed naming conflict with another program called typer.

I have tested auto complete on this code that I have run with typer [name.py] run --[TAB][TAB]

import typer


def main(name: str = typer.Option("World", help="The name to say hi to.")):
    typer.echo(f"Hello {name}")


if __name__ == "__main__":
    typer.run(main

Here is the bottom of my .zshrc. I can confirm

# tabtab source for packages
# uninstall by removing these lines
[[ -f ~/.config/tabtab/__tabtab.zsh ]] && . ~/.config/tabtab/__tabtab.zsh || true

autoload -Uz compinit
zstyle ':completion:*' menu select
fpath+=~/.zfunc

Happy to post my full zshrc if it would help!

Can Also confirm that zfunc _typer exists

#compdef typer

_typer_completion() {
  eval $(env _TYPER_COMPLETE_ARGS="${words[1,$CURRENT]}" _TYPER_COMPLETE=complete_zsh typer)
}

compdef _typer_completion typer%   
@theFong theFong added the question Question or problem label Oct 21, 2020
@theFong theFong changed the title Typer CLI and Packages not auto-completing [BUG] [BUG] Typer CLI and Packages not auto-completing Oct 21, 2020
@max-tet
Copy link

max-tet commented Feb 19, 2021

I have the same problem on Arch Linux. My application is named differently, no naming conflict with an existing one. I also checked, the file is created in .zfunc.

@everdark
Copy link

I have faced similar issue today with zsh and powerlevel10k prompt. I managed to solve the problem by moving the following section

zstyle ':completion:*' menu select
fpath+=~/.zfunc

in my ~/.zshrc file to near top (right after the initiation of powerlevel10k prompt) from the bottom.

@ssbarnea
Copy link
Contributor

ssbarnea commented Apr 2, 2021

Things I had to do to make completion work, in case it may help someone else:

  • be sure you do not print anything to stdout (logging does that in default config!) or the generated script may endup being broken
  • I had to add compinit -D at the end of my ~/.zshrc file. Without it completion would not have worked

@flight505
Copy link

I am using Prezto not powerlevel10k, and I have that same problem.. I tried everything suggested in the thread still not working.. Adding compinit -D at the end of my ~/.zshrc file results in:

(eval):1: bad pattern: ^[[H^[[2J^[[3J_arguments
sh: cls: command not found
(eval):1: bad pattern: ^[[H^[[2J^[[3J_arguments
sh: cls: command not found
(eval):1: bad pattern: ^[[H^[[2J^[[3J_arguments

@rolldeep
Copy link

rolldeep commented Sep 1, 2021

Hi guys, I'm having the same error on my Ubuntu 20.04 VM. Is there any update on how to solve the problem?

@rolldeep
Copy link

rolldeep commented Sep 1, 2021

Things I had to do to make completion work, in case it may help someone else:

be sure you do not print anything to stdout (logging does that in default config!) or the generated script may endup being broken

I had to add compinit -D at the end of my ~/.zshrc file. Without it completion would not have worked

I've tried that and I got no changes at all.

@roniel-rhack
Copy link

Hi guys, any news about this issue??

@svlandeg svlandeg added shell / zsh bug Something isn't working and removed autocompletion question Question or problem investigate labels Jul 1, 2024
@svlandeg
Copy link
Member

svlandeg commented Jul 1, 2024

Hi all, the zsh autocompletion feature should be fixed with PR #237. The fix is similar to what @everdark suggested 🙏

@svlandeg svlandeg linked a pull request Jul 1, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working shell / zsh
Projects
None yet
Development

Successfully merging a pull request may close this issue.

9 participants