summaryrefslogtreecommitdiffstats
path: root/cmd-bind-key.c
diff options
context:
space:
mode:
authornicm <nicm>2019-05-27 12:16:27 +0000
committernicm <nicm>2019-05-27 12:16:27 +0000
commit6b332127cae97914d34c39575881fbc87205f4e0 (patch)
treee451d78a0ec378c4b58b3a401a88532c27a25ae0 /cmd-bind-key.c
parent65e5e1456179d68f36602a5976184b38cc4b636c (diff)
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 'cmd-bind-key.c')
-rw-r--r--cmd-bind-key.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/cmd-bind-key.c b/cmd-bind-key.c
index ed2f69d1..2af15d29 100644
--- a/cmd-bind-key.c
+++ b/cmd-bind-key.c
@@ -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");