mirror of
https://github.com/tmux/tmux.git
synced 2025-09-03 14:27:09 +00:00
Provide a way for hooks to tag formats onto the commands they fire so
that the user can get at additional information - now used for the "hook" format, more to come.
This commit is contained in:
20
hooks.c
20
hooks.c
@ -146,7 +146,7 @@ hooks_run(struct hooks *hooks, struct client *c, struct cmd_find_state *fs,
|
||||
struct hook *hook;
|
||||
va_list ap;
|
||||
char *name;
|
||||
struct cmdq_item *new_item, *loop;
|
||||
struct cmdq_item *new_item;
|
||||
|
||||
va_start(ap, fmt);
|
||||
xvasprintf(&name, fmt, ap);
|
||||
@ -160,12 +160,10 @@ hooks_run(struct hooks *hooks, struct client *c, struct cmd_find_state *fs,
|
||||
log_debug("running hook %s", name);
|
||||
|
||||
new_item = cmdq_get_command(hook->cmdlist, fs, NULL, CMDQ_NOHOOKS);
|
||||
|
||||
for (loop = new_item; loop != NULL; loop = loop->next)
|
||||
loop->hook = xstrdup(name);
|
||||
free(name);
|
||||
|
||||
cmdq_format(new_item, "hook", "%s", name);
|
||||
cmdq_append(c, new_item);
|
||||
|
||||
free(name);
|
||||
}
|
||||
|
||||
void
|
||||
@ -175,7 +173,7 @@ hooks_insert(struct hooks *hooks, struct cmdq_item *item,
|
||||
struct hook *hook;
|
||||
va_list ap;
|
||||
char *name;
|
||||
struct cmdq_item *new_item, *loop;
|
||||
struct cmdq_item *new_item;
|
||||
|
||||
if (item->flags & CMDQ_NOHOOKS)
|
||||
return;
|
||||
@ -192,13 +190,11 @@ hooks_insert(struct hooks *hooks, struct cmdq_item *item,
|
||||
log_debug("running hook %s (parent %p)", name, item);
|
||||
|
||||
new_item = cmdq_get_command(hook->cmdlist, fs, NULL, CMDQ_NOHOOKS);
|
||||
|
||||
for (loop = new_item; loop != NULL; loop = loop->next)
|
||||
loop->hook = xstrdup(name);
|
||||
free(name);
|
||||
|
||||
cmdq_format(new_item, "hook", "%s", name);
|
||||
if (item != NULL)
|
||||
cmdq_insert_after(item, new_item);
|
||||
else
|
||||
cmdq_append(NULL, new_item);
|
||||
|
||||
free(name);
|
||||
}
|
||||
|
Reference in New Issue
Block a user