aboutsummaryrefslogtreecommitdiff
path: root/format.c
diff options
context:
space:
mode:
Diffstat (limited to 'format.c')
-rw-r--r--format.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/format.c b/format.c
index aace9103..57e9e6a4 100644
--- a/format.c
+++ b/format.c
@@ -81,6 +81,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;
@@ -103,6 +104,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));
}
@@ -127,6 +132,7 @@ struct format_tree {
struct session *s;
struct window_pane *wp;
+ u_int tag;
int flags;
RB_HEAD(format_entry_tree, format_entry) tree;
@@ -242,9 +248,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;
@@ -516,7 +524,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;
@@ -527,6 +535,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(ft, "version", "%s", VERSION);