diff options
author | Thomas Adam <thomas@xteddy.org> | 2017-08-16 14:01:15 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2017-08-16 14:01:15 +0100 |
commit | 2103a09430142725ea933dcf434c79460ab419f1 (patch) | |
tree | a5ee1d7b8a303078b713a891edc0a177082522bb | |
parent | 0824850bbce86c395230700cb10c81f162319858 (diff) | |
parent | c6a8ad23a14034ee956bcb45748f743ef5d0c1fc (diff) | |
download | rtmux-2103a09430142725ea933dcf434c79460ab419f1.tar.gz rtmux-2103a09430142725ea933dcf434c79460ab419f1.tar.bz2 rtmux-2103a09430142725ea933dcf434c79460ab419f1.zip |
Merge branch 'obsd-master'
-rw-r--r-- | alerts.c | 14 | ||||
-rw-r--r-- | cmd-display-panes.c | 19 | ||||
-rw-r--r-- | options-table.c | 6 | ||||
-rw-r--r-- | server-client.c | 7 | ||||
-rw-r--r-- | tmux.1 | 13 | ||||
-rw-r--r-- | tmux.h | 12 |
6 files changed, 46 insertions, 25 deletions
@@ -267,11 +267,11 @@ alerts_set_message(struct session *s, struct window *w, struct winlink *wl, int flag; /* - * We have found an alert (bell, activity or silence), so we need - * to notify the user. For each client attached to this session, + * We have found an alert (bell, activity or silence), so we need to + * pass it on to the user. For each client attached to this session, * decide whether a bell (or visual message) is needed. * - * {bell,activity,silence}-action determines when we notify: none means + * {bell,activity,silence}-action determines when we alert: none means * nothing happens, current means we only do something for the current * window and other means only for windows other than the current. * @@ -280,17 +280,17 @@ alerts_set_message(struct session *s, struct window *w, struct winlink *wl, * mean both a bell and visual message is sent. */ - if (action == BELL_NONE) + if (action == ALERT_NONE) return; TAILQ_FOREACH(c, &clients, entry) { if (c->session != s || c->flags & CLIENT_CONTROL) continue; flag = 0; - if (action == BELL_ANY) + if (action == ALERT_ANY) flag = 1; - else if (action == BELL_CURRENT) + else if (action == ALERT_CURRENT) flag = (c->session->curw->window == w); - else if (action == BELL_OTHER) + else if (action == ALERT_OTHER) flag = (c->session->curw->window != w); if (!flag) continue; 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); } diff --git a/options-table.c b/options-table.c index 705e11c6..ded8438d 100644 --- a/options-table.c +++ b/options-table.c @@ -149,7 +149,7 @@ const struct options_table_entry options_table[] = { .type = OPTIONS_TABLE_CHOICE, .scope = OPTIONS_TABLE_SESSION, .choices = options_table_bell_action_list, - .default_num = BELL_OTHER + .default_num = ALERT_OTHER }, { .name = "assume-paste-time", @@ -172,7 +172,7 @@ const struct options_table_entry options_table[] = { .type = OPTIONS_TABLE_CHOICE, .scope = OPTIONS_TABLE_SESSION, .choices = options_table_bell_action_list, - .default_num = BELL_ANY + .default_num = ALERT_ANY }, { .name = "default-command", @@ -357,7 +357,7 @@ const struct options_table_entry options_table[] = { .type = OPTIONS_TABLE_CHOICE, .scope = OPTIONS_TABLE_SESSION, .choices = options_table_bell_action_list, - .default_num = BELL_OTHER + .default_num = ALERT_OTHER }, { .name = "status", diff --git a/server-client.c b/server-client.c index 61d4f45f..cf9e8b31 100644 --- a/server-client.c +++ b/server-client.c @@ -72,19 +72,18 @@ server_client_callback_identify(__unused int fd, __unused short events, /* Set identify mode on client. */ void -server_client_set_identify(struct client *c) +server_client_set_identify(struct client *c, u_int delay) { struct timeval tv; - int delay; - delay = options_get_number(c->session->options, "display-panes-time"); tv.tv_sec = delay / 1000; tv.tv_usec = (delay % 1000) * 1000L; if (event_initialized(&c->identify_timer)) evtimer_del(&c->identify_timer); evtimer_set(&c->identify_timer, server_client_callback_identify, c); - evtimer_add(&c->identify_timer, &tv); + if (delay != 0) + evtimer_add(&c->identify_timer, &tv); c->flags |= CLIENT_IDENTIFY; c->tty.flags |= (TTY_FREEZE|TTY_NOCURSOR); @@ -1465,6 +1465,7 @@ specifies the format for each item in the tree. This command works only if at least one client is attached. .It Xo .Ic display-panes +.Op Fl d Ar duration .Op Fl t Ar target-client .Op Ar template .Xc @@ -1472,11 +1473,19 @@ This command works only if at least one client is attached. Display a visible indicator of each pane shown by .Ar target-client . See the -.Ic display-panes-time , -.Ic display-panes-colour , +.Ic display-panes-colour and .Ic display-panes-active-colour session options. +The indicator is closed when a key is pressed or +.Ar duration +milliseconds have passed. +If +.Fl d +is not given, +.Ic display-panes-time +is used. +A duration of zero means the indicator stays until a key is pressed. While the indicator is on screen, a pane may be chosen with the .Ql 0 to @@ -81,11 +81,11 @@ struct tmuxproc; #define nitems(_a) (sizeof((_a)) / sizeof((_a)[0])) #endif -/* Bell option values. */ -#define BELL_NONE 0 -#define BELL_ANY 1 -#define BELL_CURRENT 2 -#define BELL_OTHER 3 +/* Alert option values. */ +#define ALERT_NONE 0 +#define ALERT_ANY 1 +#define ALERT_CURRENT 2 +#define ALERT_OTHER 3 /* Visual option values. */ #define VISUAL_OFF 0 @@ -1874,7 +1874,7 @@ void server_add_accept(int); /* server-client.c */ u_int server_client_how_many(void); -void server_client_set_identify(struct client *); +void server_client_set_identify(struct client *, u_int); void server_client_clear_identify(struct client *, struct window_pane *); void server_client_set_key_table(struct client *, const char *); const char *server_client_get_key_table(struct client *); |