diff options
| -rw-r--r-- | degesch.c | 19 | 
1 files changed, 14 insertions, 5 deletions
| @@ -5212,12 +5212,21 @@ complete_option (struct app_context *ctx, struct completion *data,  	struct str_vector options;  	str_vector_init (&options); -	// Wildcard expansion is an interesting side-effect -	char *x = xstrdup_printf ("%s*", word); -	dump_matching_options (ctx, x, &options); -	free (x); +	config_dump (ctx->config.root, &options); +	str_vector_sort (&options); -	str_vector_add_vector (output, options.vector); +	// Wildcard expansion is an interesting side-effect +	char *mask = xstrdup_printf ("%s*", word); +	for (size_t i = 0; i < options.len; i++) +	{ +		const char *line = options.vector[i]; +		char *key = xstrndup (line, strcspn (line, " ")); +		if (!fnmatch (mask, key, 0)) +			str_vector_add_owned (output, key); +		else +			free (key); +	} +	free (mask);  	str_vector_free (&options);  } | 
