summaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2020-09-16 19:13:00 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2020-09-16 19:13:00 +0000
commit186438cca189265591a61bfe736326af1124a90f (patch)
treed121b3b29d85eab213bfbbb662112a35f516b2dc /usr.bin
parent4f63105a8cc79d5502081e3bc45c140cfe5a37f5 (diff)
Add -q flag to unbind-key to hide errors, GitHub issue 2381.
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/tmux/cmd-unbind-key.c56
-rw-r--r--usr.bin/tmux/tmux.19
2 files changed, 39 insertions, 26 deletions
diff --git a/usr.bin/tmux/cmd-unbind-key.c b/usr.bin/tmux/cmd-unbind-key.c
index ad0c38581c2..bc67ff0d70d 100644
--- a/usr.bin/tmux/cmd-unbind-key.c
+++ b/usr.bin/tmux/cmd-unbind-key.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-unbind-key.c,v 1.31 2020/04/13 08:26:27 nicm Exp $ */
+/* $OpenBSD: cmd-unbind-key.c,v 1.32 2020/09/16 19:12:59 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -32,8 +32,8 @@ const struct cmd_entry cmd_unbind_key_entry = {
.name = "unbind-key",
.alias = "unbind",
- .args = { "anT:", 0, 1 },
- .usage = "[-an] [-T key-table] key",
+ .args = { "anqT:", 0, 1 },
+ .usage = "[-anq] [-T key-table] key",
.flags = CMD_AFTERHOOK,
.exec = cmd_unbind_key_exec
@@ -45,44 +45,54 @@ cmd_unbind_key_exec(struct cmd *self, struct cmdq_item *item)
struct args *args = cmd_get_args(self);
key_code key;
const char *tablename;
+ int quiet = args_has(args, 'q');
- if (!args_has(args, 'a')) {
- if (args->argc != 1) {
- cmdq_error(item, "missing key");
- return (CMD_RETURN_ERROR);
- }
- key = key_string_lookup_string(args->argv[0]);
- if (key == KEYC_NONE || key == KEYC_UNKNOWN) {
- cmdq_error(item, "unknown key: %s", args->argv[0]);
- return (CMD_RETURN_ERROR);
- }
- } else {
+ if (args_has(args, 'a')) {
if (args->argc != 0) {
- cmdq_error(item, "key given with -a");
+ if (!quiet)
+ cmdq_error(item, "key given with -a");
return (CMD_RETURN_ERROR);
}
- key = KEYC_UNKNOWN;
- }
- if (key == KEYC_UNKNOWN) {
tablename = args_get(args, 'T');
if (tablename == NULL) {
- key_bindings_remove_table("root");
- key_bindings_remove_table("prefix");
- return (CMD_RETURN_NORMAL);
+ if (args_has(args, 'n'))
+ tablename = "root";
+ else
+ tablename = "prefix";
}
if (key_bindings_get_table(tablename, 0) == NULL) {
- cmdq_error(item, "table %s doesn't exist", tablename);
+ if (!quiet) {
+ cmdq_error(item, "table %s doesn't exist" ,
+ tablename);
+ }
return (CMD_RETURN_ERROR);
}
+
key_bindings_remove_table(tablename);
return (CMD_RETURN_NORMAL);
}
+ if (args->argc != 1) {
+ if (!quiet)
+ cmdq_error(item, "missing key");
+ return (CMD_RETURN_ERROR);
+ }
+
+ key = key_string_lookup_string(args->argv[0]);
+ if (key == KEYC_NONE || key == KEYC_UNKNOWN) {
+ if (!quiet)
+ cmdq_error(item, "unknown key: %s", args->argv[0]);
+ return (CMD_RETURN_ERROR);
+ }
+
if (args_has(args, 'T')) {
tablename = args_get(args, 'T');
if (key_bindings_get_table(tablename, 0) == NULL) {
- cmdq_error(item, "table %s doesn't exist", tablename);
+ if (!quiet) {
+ cmdq_error(item, "table %s doesn't exist" ,
+ tablename);
+ }
return (CMD_RETURN_ERROR);
}
} else if (args_has(args, 'n'))
diff --git a/usr.bin/tmux/tmux.1 b/usr.bin/tmux/tmux.1
index d2416d24179..3133c566e42 100644
--- a/usr.bin/tmux/tmux.1
+++ b/usr.bin/tmux/tmux.1
@@ -1,4 +1,4 @@
-.\" $OpenBSD: tmux.1,v 1.794 2020/09/02 13:46:35 nicm Exp $
+.\" $OpenBSD: tmux.1,v 1.795 2020/09/16 19:12:59 nicm Exp $
.\"
.\" Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
.\"
@@ -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: September 2 2020 $
+.Dd $Mdocdate: September 16 2020 $
.Dt TMUX 1
.Os
.Sh NAME
@@ -3039,7 +3039,7 @@ Send the prefix key, or with
.Fl 2
the secondary prefix key, to a window as if it was pressed.
.It Xo Ic unbind-key
-.Op Fl an
+.Op Fl anq
.Op Fl T Ar key-table
.Ar key
.Xc
@@ -3054,6 +3054,9 @@ are the same as for
If
.Fl a
is present, all key bindings are removed.
+The
+.Fl q
+option prevents errors being returned.
.El
.Sh OPTIONS
The appearance and behaviour of