=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-set-option.c,v retrieving revision 1.137 retrieving revision 1.138 diff -u -r1.137 -r1.138 --- src/usr.bin/tmux/cmd-set-option.c 2020/06/16 08:18:34 1.137 +++ src/usr.bin/tmux/cmd-set-option.c 2020/12/15 08:31:50 1.138 @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-set-option.c,v 1.137 2020/06/16 08:18:34 nicm Exp $ */ +/* $OpenBSD: cmd-set-option.c,v 1.138 2020/12/15 08:31:50 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -33,8 +33,8 @@ .name = "set-option", .alias = "set", - .args = { "aFgopqst:uw", 1, 2 }, - .usage = "[-aFgopqsuw] " CMD_TARGET_PANE_USAGE " option [value]", + .args = { "aFgopqst:uUw", 1, 2 }, + .usage = "[-aFgopqsuUw] " CMD_TARGET_PANE_USAGE " option [value]", .target = { 't', CMD_FIND_PANE, CMD_FIND_CANFAIL }, @@ -74,8 +74,9 @@ struct args *args = cmd_get_args(self); int append = args_has(args, 'a'); struct cmd_find_state *target = cmdq_get_target(item); + struct window_pane *loop; struct options *oo; - struct options_entry *parent, *o; + struct options_entry *parent, *o, *po; char *name, *argument, *value = NULL, *cause; int window, idx, already, error, ambiguous; int scope; @@ -148,7 +149,19 @@ } /* Change the option. */ - if (args_has(args, 'u')) { + if (args_has(args, 'U') && scope == OPTIONS_TABLE_WINDOW) { + TAILQ_FOREACH(loop, &target->w->panes, entry) { + po = options_get_only(loop->options, name); + if (po == NULL) + continue; + if (options_remove_or_default(po, idx, &cause) != 0) { + cmdq_error(item, "%s", cause); + free(cause); + goto fail; + } + } + } + if (args_has(args, 'u') || args_has(args, 'U')) { if (o == NULL) goto out; if (options_remove_or_default(o, idx, &cause) != 0) {