Preserve command group when moving temporary list to current list being

buit.
This commit is contained in:
nicm 2021-08-21 14:06:17 +00:00
parent 110ba767e5
commit c286fbdcd7
3 changed files with 14 additions and 2 deletions

View File

@ -871,7 +871,7 @@ cmd_parse_build_commands(struct cmd_parse_commands *cmds,
cmd_list_free(current); cmd_list_free(current);
return; return;
} }
cmd_list_move(current, add); cmd_list_append_all(current, add);
cmd_list_free(add); cmd_list_free(add);
} }
if (current != NULL) { if (current != NULL) {

13
cmd.c
View File

@ -594,7 +594,18 @@ cmd_list_append(struct cmd_list *cmdlist, struct cmd *cmd)
TAILQ_INSERT_TAIL(cmdlist->list, cmd, qentry); TAILQ_INSERT_TAIL(cmdlist->list, cmd, qentry);
} }
/* Move all commands from one command list to another */ /* Append all commands from one list to another. */
void
cmd_list_append_all(struct cmd_list *cmdlist, struct cmd_list *from)
{
struct cmd *cmd;
TAILQ_FOREACH(cmd, from->list, qentry)
cmd->group = cmdlist->group;
TAILQ_CONCAT(cmdlist->list, from->list, qentry);
}
/* Move all commands from one command list to another. */
void void
cmd_list_move(struct cmd_list *cmdlist, struct cmd_list *from) cmd_list_move(struct cmd_list *cmdlist, struct cmd_list *from)
{ {

1
tmux.h
View File

@ -2256,6 +2256,7 @@ void cmd_free(struct cmd *);
char *cmd_print(struct cmd *); char *cmd_print(struct cmd *);
struct cmd_list *cmd_list_new(void); struct cmd_list *cmd_list_new(void);
void cmd_list_append(struct cmd_list *, struct cmd *); 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_move(struct cmd_list *, struct cmd_list *);
void cmd_list_free(struct cmd_list *); void cmd_list_free(struct cmd_list *);
char *cmd_list_print(struct cmd_list *, int); char *cmd_list_print(struct cmd_list *, int);