mirror of
https://github.com/tmux/tmux.git
synced 2025-01-07 16:28:48 +00:00
Allow choice options (multiple states) to be toggled between states 0
and 1.
This commit is contained in:
parent
a5a873dccc
commit
5a2d0533a8
@ -289,9 +289,15 @@ cmd_set_option_set(struct cmd *self, struct cmd_q *cmdq,
|
|||||||
{
|
{
|
||||||
struct options_entry *o;
|
struct options_entry *o;
|
||||||
|
|
||||||
if (oe->type != OPTIONS_TABLE_FLAG && value == NULL) {
|
switch (oe->type) {
|
||||||
cmdq_error(cmdq, "empty value");
|
case OPTIONS_TABLE_FLAG:
|
||||||
return (-1);
|
case OPTIONS_TABLE_CHOICE:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (value == NULL) {
|
||||||
|
cmdq_error(cmdq, "empty value");
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
o = NULL;
|
o = NULL;
|
||||||
@ -455,21 +461,27 @@ cmd_set_option_choice(unused struct cmd *self, struct cmd_q *cmdq,
|
|||||||
const char **choicep;
|
const char **choicep;
|
||||||
int n, choice = -1;
|
int n, choice = -1;
|
||||||
|
|
||||||
n = 0;
|
if (value == NULL) {
|
||||||
for (choicep = oe->choices; *choicep != NULL; choicep++) {
|
choice = options_get_number(oo, oe->name);
|
||||||
n++;
|
if (choice < 2)
|
||||||
if (strncmp(*choicep, value, strlen(value)) != 0)
|
choice = !choice;
|
||||||
continue;
|
} else {
|
||||||
|
n = 0;
|
||||||
|
for (choicep = oe->choices; *choicep != NULL; choicep++) {
|
||||||
|
n++;
|
||||||
|
if (strncmp(*choicep, value, strlen(value)) != 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (choice != -1) {
|
if (choice != -1) {
|
||||||
cmdq_error(cmdq, "ambiguous value: %s", value);
|
cmdq_error(cmdq, "ambiguous value: %s", value);
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
choice = n - 1;
|
||||||
|
}
|
||||||
|
if (choice == -1) {
|
||||||
|
cmdq_error(cmdq, "unknown value: %s", value);
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
choice = n - 1;
|
|
||||||
}
|
|
||||||
if (choice == -1) {
|
|
||||||
cmdq_error(cmdq, "unknown value: %s", value);
|
|
||||||
return (NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (options_set_number(oo, oe->name, choice));
|
return (options_set_number(oo, oe->name, choice));
|
||||||
|
Loading…
Reference in New Issue
Block a user