1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-06-16 21:35:24 +00:00

Merge pull request #1768 from profanity-im/winmsg-autocomp

Improve /msg and /win autocompletion
This commit is contained in:
Michael Vetter 2022-10-17 17:28:53 +02:00 committed by GitHub
commit fc8455ba34
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -275,6 +275,7 @@ static Autocomplete intype_ac;
static Autocomplete mood_ac;
static Autocomplete mood_type_ac;
static Autocomplete adhoc_cmd_ac;
static Autocomplete lastactivity_ac;
/*!
* \brief Initialization of auto completion for commands.
@ -1176,6 +1177,10 @@ cmd_ac_init(void)
adhoc_cmd_ac = autocomplete_new();
autocomplete_add(adhoc_cmd_ac, "list");
autocomplete_add(adhoc_cmd_ac, "exec");
lastactivity_ac = autocomplete_new();
autocomplete_add(lastactivity_ac, "set");
autocomplete_add(lastactivity_ac, "get");
}
void
@ -1497,8 +1502,9 @@ cmd_ac_reset(ProfWin* window)
autocomplete_reset(mood_ac);
autocomplete_reset(mood_type_ac);
autocomplete_reset(adhoc_cmd_ac);
autocomplete_reset(script_ac);
autocomplete_reset(lastactivity_ac);
if (script_show_ac) {
autocomplete_free(script_show_ac);
script_show_ac = NULL;
@ -1665,6 +1671,7 @@ cmd_ac_uninit(void)
autocomplete_free(executable_ac);
autocomplete_free(intype_ac);
autocomplete_free(adhoc_cmd_ac);
autocomplete_free(lastactivity_ac);
}
static void
@ -1836,6 +1843,11 @@ _cmd_ac_complete_params(ProfWin* window, const char* const input, gboolean previ
free(unquoted);
return result;
}
result = autocomplete_param_with_func(unquoted, contact_choices[i], roster_barejid_autocomplete, previous, NULL);
if (result) {
free(unquoted);
return result;
}
}
free(unquoted);
@ -3668,7 +3680,16 @@ _console_autocomplete(ProfWin* window, const char* const input, gboolean previou
static char*
_win_autocomplete(ProfWin* window, const char* const input, gboolean previous)
{
return autocomplete_param_with_func(input, "/win", win_autocomplete, previous, NULL);
char* result = autocomplete_param_with_func(input, "/win", win_autocomplete, previous, NULL);
if (result) {
return result;
}
char* unquoted = strip_arg_quotes(input);
result = autocomplete_param_with_func(unquoted, "/win", roster_contact_autocomplete, previous, NULL);
free(unquoted);
return result;
}
static char*
@ -4237,8 +4258,8 @@ _lastactivity_autocomplete(ProfWin* window, const char* const input, gboolean pr
{
char* result = NULL;
result = autocomplete_param_with_ac(input, "/lastactivity", status_ac, TRUE, previous);
if (!result) {
result = autocomplete_param_with_ac(input, "/lastactivity", lastactivity_ac, TRUE, previous);
if (result) {
return result;
}
@ -4247,9 +4268,10 @@ _lastactivity_autocomplete(ProfWin* window, const char* const input, gboolean pr
if (conn_status == JABBER_CONNECTED) {
result = autocomplete_param_with_func(input, "/lastactivity set", prefs_autocomplete_boolean_choice, previous, NULL);
if (!result) {
result = autocomplete_param_with_func(input, "/lastactivity get", roster_barejid_autocomplete, previous, NULL);
if (result) {
return result;
}
result = autocomplete_param_with_func(input, "/lastactivity get", roster_barejid_autocomplete, previous, NULL);
}
return result;