git: support --list-cmds=list-<category>
This allows us to select any group of commands by a category defined in command-list.txt. This is an internal/hidden option so we don't have to be picky about the category name or worried about exposing too much. This will be used later by git-completion.bash to retrieve certain command groups. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
6bb2dc0b94
commit
3c7777672b
23
help.c
23
help.c
@ -329,6 +329,29 @@ void list_all_other_cmds(struct string_list *list)
|
||||
clean_cmdnames(&other_cmds);
|
||||
}
|
||||
|
||||
void list_cmds_by_category(struct string_list *list,
|
||||
const char *cat)
|
||||
{
|
||||
int i, n = ARRAY_SIZE(command_list);
|
||||
uint32_t cat_id = 0;
|
||||
|
||||
for (i = 0; category_names[i]; i++) {
|
||||
if (!strcmp(cat, category_names[i])) {
|
||||
cat_id = 1UL << i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!cat_id)
|
||||
die(_("unsupported command listing type '%s'"), cat);
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
struct cmdname_help *cmd = command_list + i;
|
||||
|
||||
if (cmd->category & cat_id)
|
||||
string_list_append(list, drop_prefix(cmd->name));
|
||||
}
|
||||
}
|
||||
|
||||
int is_in_cmdlist(struct cmdnames *c, const char *s)
|
||||
{
|
||||
int i;
|
||||
|
||||
Reference in New Issue
Block a user