Resolve conflict in completion flag check better
@@ -318,23 +318,31 @@ func checkShellCompleteFlag(a *App, arguments []string) (bool, []string) {
}
func checkCompletions(c *Context) bool {
- if c.shellComplete {
- ShowCompletions(c)
- return true
+ if !c.shellComplete {
+ return false
}
+ if args := c.Args(); args.Present() {
+ name := args.First()
+ if cmd := c.App.Command(name); cmd != nil {
+ // let the command handle the completion
return false
}
+ }
-func checkCommandCompletions(c *Context, name string) bool {
- if c.shellComplete {
- ShowCommandCompletions(c, name)
+ ShowCompletions(c)
return true
}
+func checkCommandCompletions(c *Context, name string) bool {
+ if !c.shellComplete {
return false
}
+ ShowCommandCompletions(c, name)
+ return true
+}
+
func checkInitCompletion(c *Context) (bool, error) {
if c.IsSet(InitCompletionFlag.Name) {
shell := c.String(InitCompletionFlag.Name)
