fix: Don't complete _command on zsh (#1690)

Previously the generated zsh completion script started with the line

    #compdef _<command> <command>

where <command> is the command that the zsh completion script is
generated for.

This enabled completions for both <command> and _<command>, but
_<command> is the completion function itself and should not be
completed. Furthermore, attempting to autocomplete _<command> (e.g.
typing "_<command><Space><Tab>" in a zsh shell) causes zsh to hang.

This commit fixes the #compdef line to only complete <command>, not
_<command>.

Co-authored-by: Arvid Norlander <VorpalBlade@users.noreply.github.com>
This commit is contained in:
Tom Payne 2022-06-05 21:45:59 +02:00 committed by GitHub
parent 5b11656e45
commit 37d481d4d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -75,7 +75,7 @@ func genZshComp(buf io.StringWriter, name string, includeDesc bool) {
if !includeDesc { if !includeDesc {
compCmd = ShellCompNoDescRequestCmd compCmd = ShellCompNoDescRequestCmd
} }
WriteStringAndCheck(buf, fmt.Sprintf(`#compdef _%[1]s %[1]s WriteStringAndCheck(buf, fmt.Sprintf(`#compdef %[1]s
# zsh completion for %-36[1]s -*- shell-script -*- # zsh completion for %-36[1]s -*- shell-script -*-