On Mon, Apr 23, 2018 at 3:32 PM, SZEDER Gábor <szeder.dev@xxxxxxxxx> wrote: > But then I noticed that it's not an accurate description of the > current situation, because there is a wide grey area between > porcelains and plumbing, and the completion script doesn't "filter out > plumbing commands", but rather filters out commands that can be > considered too low-level to be useful for "general" usage. > Consequently, after 'git <TAB>' we also list: > > - some 'ancillaryinterrogators': blame, annotate, difftool, fsck, > help > - some 'ancillarymanipulators': config, mergetool, remote > - some 'foreignscminterface': p4, request-pull, svn, send-email > - even some plumbing: apply, name-rev (though 'name-rev' could be > omitted; we have 'git describe') > - and also all "unknown" 'git-foo' commands that can be found in > $PATH, which can be the user's own git scripts or other > git-related tools ('git-annex', Git LFS, etc.). > > With this change we wouldn't list any of the above commands, but only > those that are explicitly categorized as 'mainporcelain'. I'd much > prefer the current behaviour. Yeah I noticed this (kinda) with filter-branch but I did not look further to see all this. It's good that you review this series then :) For the first group (known commands), how about we add a new category "completion" in command-list.txt? Each command may belong to multiple categories (and my updated script has to deal with that [1]). For the second group, we could also have a special "external" category that is produced at run time, not specified in command-list.txt. --list-cmds option either has to accept multiple values, or we accept multiple --list-cmds=<category> options. git-completion.bash will be updated to ask git "give me the commands in the mainporcelain, completable or external category". This also addresses another thing that bugs me: I wanted an option to let me complete all commands instead of just porcelain. This approach kinda generalizes that and it would be easy to let the user choose what category they want to complete. [1] which also means I could bring "deprecated" category back. -- Duy