zsh-completion ignores hidden commands and flags :)

This commit is contained in:
Haim Ashkenazi
2018-02-25 14:12:58 +02:00
committed by Steve Francia
parent a15d099018
commit f0508c8e76
2 changed files with 81 additions and 4 deletions

View File

@ -45,11 +45,11 @@ function {{constructPath .}} {
{{end}} "1: :({{subCmdList .}})" \
"*::arg:->args"
case $line[1] in {{- range .Commands}}
case $line[1] in {{- range .Commands}}{{if not .Hidden}}
{{cmdName .}})
{{constructPath .}}
;;
{{end}} esac
{{end}}{{end}} esac
}
{{range .Commands}}
{{template "selectCmdTemplate" .}}
@ -69,8 +69,10 @@ function {{constructPath .}} {
{{- end}}
{{define "selectCmdTemplate" -}}
{{if .Hidden}}{{/* ignore hidden*/}}{{else -}}
{{if .Commands}}{{template "argumentsC" .}}{{else}}{{template "arguments" .}}{{end}}
{{- end}}
{{- end}}
{{define "Main" -}}
#compdef _{{cmdName .}} {{cmdName .}}
@ -126,6 +128,9 @@ func subCmdList(c *Command) string {
var subCmds []string
for _, cmd := range c.Commands() {
if cmd.Hidden {
continue
}
subCmds = append(subCmds, cmd.Name())
}
@ -135,10 +140,14 @@ func subCmdList(c *Command) string {
func extractFlags(c *Command) []*pflag.Flag {
var flags []*pflag.Flag
c.LocalFlags().VisitAll(func(f *pflag.Flag) {
flags = append(flags, f)
if !f.Hidden {
flags = append(flags, f)
}
})
c.InheritedFlags().VisitAll(func(f *pflag.Flag) {
flags = append(flags, f)
if !f.Hidden {
flags = append(flags, f)
}
})
return flags
}