diff --git a/cmd-list-keys.c b/cmd-list-keys.c index ddfc0e0c..f25b0636 100644 --- a/cmd-list-keys.c +++ b/cmd-list-keys.c @@ -109,7 +109,8 @@ cmd_list_keys_print_notes(struct cmdq_item *item, struct args *args, key = key_string_lookup_key(bd->key, 0); if (bd->note == NULL || *bd->note == '\0') - note = cmd_list_print(bd->cmdlist, 1); + note = cmd_list_print(bd->cmdlist, + CMD_LIST_PRINT_ESCAPED|CMD_LIST_PRINT_NO_GROUPS); else note = xstrdup(bd->note); tmp = utf8_padcstr(key, keywidth + 1); @@ -288,7 +289,8 @@ cmd_list_keys_exec(struct cmd *self, struct cmdq_item *item) tmpused = strlcat(tmp, " ", tmpsize); free(cp); - cp = cmd_list_print(bd->cmdlist, 1); + cp = cmd_list_print(bd->cmdlist, + CMD_LIST_PRINT_ESCAPED|CMD_LIST_PRINT_NO_GROUPS); cplen = strlen(cp); while (tmpused + cplen + 1 >= tmpsize) { tmpsize *= 2; diff --git a/cmd.c b/cmd.c index 119b685a..e5ec9cc5 100644 --- a/cmd.c +++ b/cmd.c @@ -677,12 +677,14 @@ cmd_list_copy(const struct cmd_list *cmdlist, int argc, char **argv) /* Get a command list as a string. */ char * -cmd_list_print(const struct cmd_list *cmdlist, int escaped) +cmd_list_print(const struct cmd_list *cmdlist, int flags) { struct cmd *cmd, *next; char *buf, *this; size_t len; const char *separator; + int escaped = flags & CMD_LIST_PRINT_ESCAPED; + int no_groups = flags & CMD_LIST_PRINT_NO_GROUPS; const char *single_separator = escaped ? " \\; " : " ; "; const char *double_separator = escaped ? " \\;\\; " : " ;; "; @@ -699,7 +701,7 @@ cmd_list_print(const struct cmd_list *cmdlist, int escaped) next = TAILQ_NEXT(cmd, qentry); if (next != NULL) { - if (cmd->group != next->group) + if (!no_groups && cmd->group != next->group) separator = double_separator; else separator = single_separator; diff --git a/tmux.h b/tmux.h index 180208e3..c738fb67 100644 --- a/tmux.h +++ b/tmux.h @@ -2689,6 +2689,8 @@ void cmd_list_append(struct cmd_list *, struct cmd *); void cmd_list_append_all(struct cmd_list *, struct cmd_list *); void cmd_list_move(struct cmd_list *, struct cmd_list *); void cmd_list_free(struct cmd_list *); +#define CMD_LIST_PRINT_ESCAPED 0x1 +#define CMD_LIST_PRINT_NO_GROUPS 0x2 char *cmd_list_print(const struct cmd_list *, int); struct cmd *cmd_list_first(struct cmd_list *); struct cmd *cmd_list_next(struct cmd *);