From 87a2a13f6841236b4e52313488062fcd50e03352 Mon Sep 17 00:00:00 2001 From: Tiago Cunha Date: Sun, 21 Aug 2011 12:38:55 +0000 Subject: [PATCH] Sync OpenBSD patchset 946: 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 | 12 +++++++++--- 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/cmd-choose-client.c b/cmd-choose-client.c index df1008d3..730474dc 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 094515bd..bf16aae1 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 3eca3fff..5565e094 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 a5484c53..ff7b9f87 100644 --- a/tmux.1 +++ b/tmux.1 @@ -14,7 +14,7 @@ .\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: July 30 2011 $ +.Dd $Mdocdate: August 16 2011 $ .Dt TMUX 1 .Os .Sh NAME @@ -562,7 +562,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 @@ -718,7 +720,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 @@ -734,6 +736,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