summaryrefslogtreecommitdiff
path: root/src/fe-common
diff options
context:
space:
mode:
Diffstat (limited to 'src/fe-common')
-rw-r--r--src/fe-common/core/completion.c17
-rw-r--r--src/fe-common/core/fe-settings.c5
2 files changed, 19 insertions, 3 deletions
diff --git a/src/fe-common/core/completion.c b/src/fe-common/core/completion.c
index 861054b5..0e9982d5 100644
--- a/src/fe-common/core/completion.c
+++ b/src/fe-common/core/completion.c
@@ -690,9 +690,20 @@ static void sig_complete_set(GList **list, WINDOW_REC *window,
else if (*line != '\0' && *word == '\0') {
SETTINGS_REC *rec = settings_get_record(line);
if (rec != NULL) {
- char *value = settings_get_print(rec);
- if (value != NULL)
- *list = g_list_append(*list, value);
+ /* show the whole list of valid options */
+ if (rec->type == SETTING_TYPE_CHOICE) {
+ char **tmp = rec->choices;
+
+ while (*tmp)
+ *list = g_list_append(*list, g_strdup(*tmp++));
+ }
+ /* show the current option */
+ else {
+ char *value = settings_get_print(rec);
+
+ if (value != NULL)
+ *list = g_list_append(*list, value);
+ }
}
}
diff --git a/src/fe-common/core/fe-settings.c b/src/fe-common/core/fe-settings.c
index b689cbf9..e25886ec 100644
--- a/src/fe-common/core/fe-settings.c
+++ b/src/fe-common/core/fe-settings.c
@@ -142,6 +142,11 @@ static void cmd_set(char *data)
else
set_int(key, value);
break;
+ case SETTING_TYPE_CHOICE:
+ settings_set_choice(key, clear ? "" :
+ set_default ? rec->choices[rec->default_value.v_int] :
+ value);
+ break;
case SETTING_TYPE_STRING:
settings_set_str(key, clear ? "" :
set_default ? rec->default_value.v_string :