From 88e9079870a770c39dd8f96302602a792db9a90a Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Tue, 16 Aug 2011 10:00:52 +0000 Subject: [PATCH] Add a -r flag to switch-client to toggle the client read-only flag. From Johan Commelin. --- cmd-choose-client.c | 6 ++++-- cmd-list-clients.c | 7 ++++--- cmd-switch-client.c | 16 +++++++++++++--- tmux.1 | 10 ++++++++-- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/cmd-choose-client.c b/cmd-choose-client.c index ac766ab5..6ad1b495 100644 --- a/cmd-choose-client.c +++ b/cmd-choose-client.c @@ -76,9 +76,11 @@ cmd_choose_client_exec(struct cmd *self, struct cmd_ctx *ctx) idx++; window_choose_add(wl->window->active, i, - "%s: %s [%ux%u %s]%s", c->tty.path, + "%s: %s [%ux%u %s]%s%s", c->tty.path, c->session->name, c->tty.sx, c->tty.sy, - c->tty.termname, c->tty.flags & TTY_UTF8 ? " (utf8)" : ""); + c->tty.termname, + c->tty.flags & TTY_UTF8 ? " (utf8)" : "", + c->flags & CLIENT_READONLY ? " (ro)" : ""); } cdata = xmalloc(sizeof *cdata); diff --git a/cmd-list-clients.c b/cmd-list-clients.c index 2a4728b8..c24ec660 100644 --- a/cmd-list-clients.c +++ b/cmd-list-clients.c @@ -33,7 +33,7 @@ const struct cmd_entry cmd_list_clients_entry = { "list-clients", "lsc", "t:", 0, 0, CMD_TARGET_SESSION_USAGE, - 0, + CMD_READONLY, NULL, NULL, cmd_list_clients_exec @@ -68,9 +68,10 @@ cmd_list_clients_exec(struct cmd *self, struct cmd_ctx *ctx) if (s != NULL && s != c->session) continue; - ctx->print(ctx, "%s: %s [%ux%u %s]%s", c->tty.path, + ctx->print(ctx, "%s: %s [%ux%u %s]%s%s", c->tty.path, c->session->name, c->tty.sx, c->tty.sy, - c->tty.termname, s_utf8); + c->tty.termname, s_utf8, + c->flags & CLIENT_READONLY ? " (ro)" : ""); } return (0); diff --git a/cmd-switch-client.c b/cmd-switch-client.c index 25a57965..ab940dc4 100644 --- a/cmd-switch-client.c +++ b/cmd-switch-client.c @@ -32,9 +32,9 @@ int cmd_switch_client_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_switch_client_entry = { "switch-client", "switchc", - "lc:npt:", 0, 0, - "[-lnp] [-c target-client] [-t target-session]", - 0, + "lc:npt:r", 0, 0, + "[-lnpr] [-c target-client] [-t target-session]", + CMD_READONLY, cmd_switch_client_key_binding, NULL, cmd_switch_client_exec @@ -67,6 +67,16 @@ cmd_switch_client_exec(struct cmd *self, struct cmd_ctx *ctx) if ((c = cmd_find_client(ctx, args_get(args, 'c'))) == NULL) return (-1); + if (args_has(args, 'r')) { + if (c->flags & CLIENT_READONLY) { + c->flags &= ~CLIENT_READONLY; + ctx->info(ctx, "made client writable"); + } else { + c->flags |= CLIENT_READONLY; + ctx->info(ctx, "made client read-only"); + } + } + s = NULL; if (args_has(args, 'n')) { if ((s = session_next_session(c->session)) == NULL) { diff --git a/tmux.1 b/tmux.1 index 2f1bd90e..8b7639ae 100644 --- a/tmux.1 +++ b/tmux.1 @@ -558,7 +558,9 @@ is specified, any other clients attached to the session are detached. .Fl r signifies the client is read-only (only keys bound to the .Ic detach-client -command have any effect) +or +.Ic switch-client +commands have any effect) .Pp If no server is started, .Ic attach-session @@ -714,7 +716,7 @@ Suspend a client by sending .Dv SIGTSTP (tty stop). .It Xo Ic switch-client -.Op Fl lnp +.Op Fl lnpr .Op Fl c Ar target-client .Op Fl t Ar target-session .Xc @@ -730,6 +732,10 @@ or .Fl p is used, the client is moved to the last, next or previous session respectively. +.Fl r +toggles whether a client is read-only (see the +.Ic attach-session +command). .El .Sh WINDOWS AND PANES A