summaryrefslogtreecommitdiffstats
path: root/cmd-display-panes.c
diff options
context:
space:
mode:
authornicm <nicm>2017-08-16 12:12:54 +0000
committernicm <nicm>2017-08-16 12:12:54 +0000
commitc6a8ad23a14034ee956bcb45748f743ef5d0c1fc (patch)
tree40b2f6fb8e7b9af0f5f874cdfd92d6c88f2f4597 /cmd-display-panes.c
parentc1ec28a34bea8759481308425d7918721ef62a94 (diff)
Add -d flag to display-panes to specify timeout, and make 0 mean no
timeout. From Laurens Post.
Diffstat (limited to 'cmd-display-panes.c')
-rw-r--r--cmd-display-panes.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/cmd-display-panes.c b/cmd-display-panes.c
index 5593b268..c124a631 100644
--- a/cmd-display-panes.c
+++ b/cmd-display-panes.c
@@ -37,8 +37,8 @@ const struct cmd_entry cmd_display_panes_entry = {
.name = "display-panes",
.alias = "displayp",
- .args = { "t:", 0, 1 },
- .usage = CMD_TARGET_CLIENT_USAGE,
+ .args = { "d:t:", 0, 1 },
+ .usage = "[-d duration] " CMD_TARGET_CLIENT_USAGE,
.flags = CMD_AFTERHOOK,
.exec = cmd_display_panes_exec
@@ -49,6 +49,9 @@ cmd_display_panes_exec(struct cmd *self, struct cmdq_item *item)
{
struct args *args = self->args;
struct client *c;
+ struct session *s;
+ u_int delay;
+ char *cause;
if ((c = cmd_find_client(item, args_get(args, 't'), 0)) == NULL)
return (CMD_RETURN_ERROR);
@@ -61,8 +64,18 @@ cmd_display_panes_exec(struct cmd *self, struct cmdq_item *item)
c->identify_callback_data = xstrdup(args->argv[0]);
else
c->identify_callback_data = xstrdup("select-pane -t '%%'");
+ s = c->session;
- server_client_set_identify(c);
+ if (args_has(args, 'd')) {
+ delay = args_strtonum(args, 'd', 0, UINT_MAX, &cause);
+ if (cause != NULL) {
+ cmdq_error(item, "delay %s", cause);
+ free(cause);
+ return (CMD_RETURN_ERROR);
+ }
+ } else
+ delay = options_get_number(s->options, "display-panes-time");
+ server_client_set_identify(c, delay);
return (CMD_RETURN_NORMAL);
}