diff options
author | 2019-05-27 12:16:27 +0000 | |
---|---|---|
committer | 2019-05-27 12:16:27 +0000 | |
commit | 1c947278897ea42901a37c45dbb42578a89160de (patch) | |
tree | 3b245b8b65ecdf2613833fde2ac133d19e65db32 /usr.bin/tmux/cmd-bind-key.c | |
parent | Use getopts instead of getopt(1) (diff) | |
download | wireguard-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.c | 21 |
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"); |