summaryrefslogtreecommitdiffstats
path: root/cmd-list-keys.c
diff options
context:
space:
mode:
authornicm <nicm>2020-04-05 08:40:31 +0000
committernicm <nicm>2020-04-05 08:40:31 +0000
commitfccce69cf08b220ecad690e22451afd487e4b639 (patch)
treed204069f1297710a2837bcc86903ae6d0c6efecd /cmd-list-keys.c
parent832b8a8cf51ff0ea5137ae38210e067ffae169d8 (diff)
Add an argument to list-commands to show only a single command.
Diffstat (limited to 'cmd-list-keys.c')
-rw-r--r--cmd-list-keys.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/cmd-list-keys.c b/cmd-list-keys.c
index 34ed43bf..7e340516 100644
--- a/cmd-list-keys.c
+++ b/cmd-list-keys.c
@@ -47,8 +47,8 @@ const struct cmd_entry cmd_list_commands_entry = {
.name = "list-commands",
.alias = "lscm",
- .args = { "F:", 0, 0 },
- .usage = "[-F format]",
+ .args = { "F:", 0, 1 },
+ .usage = "[-F format] [command]",
.flags = CMD_STARTSERVER|CMD_AFTERHOOK,
.exec = cmd_list_keys_exec
@@ -317,9 +317,12 @@ cmd_list_keys_commands(struct cmd *self, struct cmdq_item *item)
const struct cmd_entry **entryp;
const struct cmd_entry *entry;
struct format_tree *ft;
- const char *template, *s;
+ const char *template, *s, *command = NULL;
char *line;
+ if (args->argc != 0)
+ command = args->argv[0];
+
if ((template = args_get(args, 'F')) == NULL) {
template = "#{command_list_name}"
"#{?command_list_alias, (#{command_list_alias}),} "
@@ -331,6 +334,11 @@ cmd_list_keys_commands(struct cmd *self, struct cmdq_item *item)
for (entryp = cmd_table; *entryp != NULL; entryp++) {
entry = *entryp;
+ if (command != NULL &&
+ (strcmp(entry->name, command) != 0 &&
+ (entry->alias == NULL ||
+ strcmp(entry->alias, command) != 0)))
+ continue;
format_add(ft, "command_list_name", "%s", entry->name);
if (entry->alias != NULL)