Refactor specific autocomplete functions

This commit is contained in:
James Booth
2013-06-02 20:11:42 +01:00
parent af95c82fe7
commit b89a751903

View File

@@ -64,6 +64,8 @@ struct cmd_t {
struct cmd_help_t help; struct cmd_help_t help;
}; };
typedef char*(*autocompleter)(char*, int*);
static struct cmd_t * _cmd_get_command(const char * const command); static struct cmd_t * _cmd_get_command(const char * const command);
static void _update_presence(const resource_presence_t presence, static void _update_presence(const resource_presence_t presence,
const char * const show, gchar **args); const char * const show, gchar **args);
@@ -1309,59 +1311,17 @@ _cmd_complete_parameters(char *input, int *size)
} }
} }
result = _who_autocomplete(input, size); autocompleter acs[] = { _who_autocomplete, _sub_autocomplete, _notify_autocomplete,
if (result != NULL) { _autoaway_autocomplete, _titlebar_autocomplete, _theme_autocomplete,
inp_replace_input(input, result, size); _account_autocomplete, _roster_autocomplete, _group_autocomplete };
g_free(result);
return; for (i = 0; i < ARRAY_SIZE(acs); i++) {
} result = acs[i](input, size);
result = _sub_autocomplete(input, size); if (result != NULL) {
if (result != NULL) { inp_replace_input(input, result, size);
inp_replace_input(input, result, size); g_free(result);
g_free(result); return;
return; }
}
result = _notify_autocomplete(input, size);
if (result != NULL) {
inp_replace_input(input, result, size);
g_free(result);
return;
}
result = _autoaway_autocomplete(input, size);
if (result != NULL) {
inp_replace_input(input, result, size);
g_free(result);
return;
}
result = _titlebar_autocomplete(input, size);
if (result != NULL) {
inp_replace_input(input, result, size);
g_free(result);
return;
}
result = _theme_autocomplete(input, size);
if (result != NULL) {
inp_replace_input(input, result, size);
g_free(result);
return;
}
result = _account_autocomplete(input, size);
if (result != NULL) {
inp_replace_input(input, result, size);
g_free(result);
return;
}
result = _roster_autocomplete(input, size);
if (result != NULL) {
inp_replace_input(input, result, size);
g_free(result);
return;
}
result = _group_autocomplete(input, size);
if (result != NULL) {
inp_replace_input(input, result, size);
g_free(result);
return;
} }
return; return;