diff options
author | nicm <nicm> | 2017-05-01 12:20:55 +0000 |
---|---|---|
committer | nicm <nicm> | 2017-05-01 12:20:55 +0000 |
commit | 0ccfb61bb0e0beb5fe76b64e30637de7d9f696c7 (patch) | |
tree | bf5f11802d7ec1338ee17e893591bdae80d2c197 /tmux.h | |
parent | a2dd7daf4e583ebb9ddc9d7cf09105c43df51399 (diff) | |
download | rtmux-0ccfb61bb0e0beb5fe76b64e30637de7d9f696c7.tar.gz rtmux-0ccfb61bb0e0beb5fe76b64e30637de7d9f696c7.tar.bz2 rtmux-0ccfb61bb0e0beb5fe76b64e30637de7d9f696c7.zip |
In order that people can use formats like #D in #() in the status line
and not have to wait for an update when they change pane, we allow
commands to run more than once a second if the expanded form
changes. Unfortunately this can mean them being run far too often
(pretty much continually) when multiple clients exist, because some
formats (including #D) will always differ between clients.
To avoid this, give each client its own tree of jobs which means that
the same command will be different instances for each client - similar
to how we have the tag to separate commands for different panes.
GitHub issue 889; test case reported by Paul Johnson.
Diffstat (limited to 'tmux.h')
-rw-r--r-- | tmux.h | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -43,6 +43,7 @@ struct client; struct cmdq_item; struct cmdq_list; struct environ; +struct format_job_tree; struct input_ctx; struct mode_key_cmdstr; struct mouse_event; @@ -1290,6 +1291,7 @@ struct client { struct timeval activity_time; struct environ *environ; + struct format_job_tree *jobs; char *title; const char *cwd; @@ -1501,7 +1503,8 @@ char *paste_make_sample(struct paste_buffer *); #define FORMAT_PANE 0x80000000U #define FORMAT_WINDOW 0x40000000U struct format_tree; -struct format_tree *format_create(struct cmdq_item *, int, int); +struct format_tree *format_create(struct client *, struct cmdq_item *, int, + int); void format_free(struct format_tree *); void printflike(3, 4) format_add(struct format_tree *, const char *, const char *, ...); @@ -1517,6 +1520,7 @@ void format_defaults_pane(struct format_tree *, struct window_pane *); void format_defaults_paste_buffer(struct format_tree *, struct paste_buffer *); +void format_lost_client(struct client *); /* hooks.c */ struct hook; |