summaryrefslogtreecommitdiffstats
path: root/usr.bin/tmux/cmd-bind-key.c
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2019-05-27 12:16:27 +0000
committernicm <nicm@openbsd.org>2019-05-27 12:16:27 +0000
commit1c947278897ea42901a37c45dbb42578a89160de (patch)
tree3b245b8b65ecdf2613833fde2ac133d19e65db32 /usr.bin/tmux/cmd-bind-key.c
parentUse getopts instead of getopt(1) (diff)
downloadwireguard-openbsd-1c947278897ea42901a37c45dbb42578a89160de.tar.xz
wireguard-openbsd-1c947278897ea42901a37c45dbb42578a89160de.zip
Add an additional {} syntax for defining strings in the configuration
file, making it much tidier to define commands that contain other tmux or shell commands (like if-shell). Also tweak bind-key to expect a string if it is only given one argument, so {} can be used with it as well. From Avi Halachmi.
Diffstat (limited to 'usr.bin/tmux/cmd-bind-key.c')
-rw-r--r--usr.bin/tmux/cmd-bind-key.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/usr.bin/tmux/cmd-bind-key.c b/usr.bin/tmux/cmd-bind-key.c
index 6fec275e2cc..e5c6ca2878b 100644
--- a/usr.bin/tmux/cmd-bind-key.c
+++ b/usr.bin/tmux/cmd-bind-key.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-bind-key.c,v 1.33 2019/05/25 07:18:20 nicm Exp $ */
+/* $OpenBSD: cmd-bind-key.c,v 1.34 2019/05/27 12:16:27 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -44,14 +44,16 @@ const struct cmd_entry cmd_bind_key_entry = {
static enum cmd_retval
cmd_bind_key_exec(struct cmd *self, struct cmdq_item *item)
{
- struct args *args = self->args;
- key_code key;
- const char *tablename;
- struct cmd_parse_result *pr;
+ struct args *args = self->args;
+ key_code key;
+ const char *tablename;
+ struct cmd_parse_result *pr;
+ char **argv = args->argv;
+ int argc = args->argc;
- key = key_string_lookup_string(args->argv[0]);
+ key = key_string_lookup_string(argv[0]);
if (key == KEYC_NONE || key == KEYC_UNKNOWN) {
- cmdq_error(item, "unknown key: %s", args->argv[0]);
+ cmdq_error(item, "unknown key: %s", argv[0]);
return (CMD_RETURN_ERROR);
}
@@ -62,7 +64,10 @@ cmd_bind_key_exec(struct cmd *self, struct cmdq_item *item)
else
tablename = "prefix";
- pr = cmd_parse_from_arguments(args->argc - 1, args->argv + 1, NULL);
+ if (argc == 2)
+ pr = cmd_parse_from_string(argv[1], NULL);
+ else
+ pr = cmd_parse_from_arguments(argc - 1, argv + 1, NULL);
switch (pr->status) {
case CMD_PARSE_EMPTY:
cmdq_error(item, "empty command");