diff options
Diffstat (limited to 'format.c')
-rw-r--r-- | format.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -77,6 +77,7 @@ static void format_defaults_winlink(struct format_tree *, struct session *, /* Entry in format job tree. */ struct format_job { + u_int tag; const char *cmd; const char *expanded; @@ -99,6 +100,10 @@ RB_GENERATE_STATIC(format_job_tree, format_job, entry, format_job_cmp); static int format_job_cmp(struct format_job *fj1, struct format_job *fj2) { + if (fj1->tag < fj2->tag) + return (-1); + if (fj1->tag > fj2->tag) + return (1); return (strcmp(fj1->cmd, fj2->cmd)); } @@ -123,6 +128,7 @@ struct format_tree { struct session *s; struct window_pane *wp; + u_int tag; int flags; RB_HEAD(format_entry_tree, format_entry) tree; @@ -238,9 +244,11 @@ format_job_get(struct format_tree *ft, const char *cmd) char *expanded; int force; + fj0.tag = ft->tag; fj0.cmd = cmd; if ((fj = RB_FIND(format_job_tree, &format_jobs, &fj0)) == NULL) { fj = xcalloc(1, sizeof *fj); + fj->tag = ft->tag; fj->cmd = xstrdup(cmd); fj->expanded = NULL; @@ -497,7 +505,7 @@ format_merge(struct format_tree *ft, struct format_tree *from) /* Create a new tree. */ struct format_tree * -format_create(struct cmdq_item *item, int flags) +format_create(struct cmdq_item *item, int tag, int flags) { struct format_tree *ft; @@ -508,6 +516,8 @@ format_create(struct cmdq_item *item, int flags) ft = xcalloc(1, sizeof *ft); RB_INIT(&ft->tree); + + ft->tag = tag; ft->flags = flags; format_add_cb(ft, "host", format_cb_host); |