1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-12-04 14:46:46 -05: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_ac;
static Autocomplete mood_type_ac; static Autocomplete mood_type_ac;
static Autocomplete adhoc_cmd_ac; static Autocomplete adhoc_cmd_ac;
static Autocomplete lastactivity_ac;
/*! /*!
* \brief Initialization of auto completion for commands. * \brief Initialization of auto completion for commands.
@ -1176,6 +1177,10 @@ cmd_ac_init(void)
adhoc_cmd_ac = autocomplete_new(); adhoc_cmd_ac = autocomplete_new();
autocomplete_add(adhoc_cmd_ac, "list"); autocomplete_add(adhoc_cmd_ac, "list");
autocomplete_add(adhoc_cmd_ac, "exec"); autocomplete_add(adhoc_cmd_ac, "exec");
lastactivity_ac = autocomplete_new();
autocomplete_add(lastactivity_ac, "set");
autocomplete_add(lastactivity_ac, "get");
} }
void void
@ -1497,8 +1502,9 @@ cmd_ac_reset(ProfWin* window)
autocomplete_reset(mood_ac); autocomplete_reset(mood_ac);
autocomplete_reset(mood_type_ac); autocomplete_reset(mood_type_ac);
autocomplete_reset(adhoc_cmd_ac); autocomplete_reset(adhoc_cmd_ac);
autocomplete_reset(script_ac); autocomplete_reset(script_ac);
autocomplete_reset(lastactivity_ac);
if (script_show_ac) { if (script_show_ac) {
autocomplete_free(script_show_ac); autocomplete_free(script_show_ac);
script_show_ac = NULL; script_show_ac = NULL;
@ -1665,6 +1671,7 @@ cmd_ac_uninit(void)
autocomplete_free(executable_ac); autocomplete_free(executable_ac);
autocomplete_free(intype_ac); autocomplete_free(intype_ac);
autocomplete_free(adhoc_cmd_ac); autocomplete_free(adhoc_cmd_ac);
autocomplete_free(lastactivity_ac);
} }
static void static void
@ -1836,6 +1843,11 @@ _cmd_ac_complete_params(ProfWin* window, const char* const input, gboolean previ
free(unquoted); free(unquoted);
return result; return result;
} }
result = autocomplete_param_with_func(unquoted, contact_choices[i], roster_barejid_autocomplete, previous, NULL);
if (result) {
free(unquoted);
return result;
}
} }
free(unquoted); free(unquoted);
@ -3668,7 +3680,16 @@ _console_autocomplete(ProfWin* window, const char* const input, gboolean previou
static char* static char*
_win_autocomplete(ProfWin* window, const char* const input, gboolean previous) _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* static char*
@ -4237,8 +4258,8 @@ _lastactivity_autocomplete(ProfWin* window, const char* const input, gboolean pr
{ {
char* result = NULL; char* result = NULL;
result = autocomplete_param_with_ac(input, "/lastactivity", status_ac, TRUE, previous); result = autocomplete_param_with_ac(input, "/lastactivity", lastactivity_ac, TRUE, previous);
if (!result) { if (result) {
return result; return result;
} }
@ -4247,9 +4268,10 @@ _lastactivity_autocomplete(ProfWin* window, const char* const input, gboolean pr
if (conn_status == JABBER_CONNECTED) { if (conn_status == JABBER_CONNECTED) {
result = autocomplete_param_with_func(input, "/lastactivity set", prefs_autocomplete_boolean_choice, previous, NULL); result = autocomplete_param_with_func(input, "/lastactivity set", prefs_autocomplete_boolean_choice, previous, NULL);
if (!result) { if (result) {
result = autocomplete_param_with_func(input, "/lastactivity get", roster_barejid_autocomplete, previous, NULL); return result;
} }
result = autocomplete_param_with_func(input, "/lastactivity get", roster_barejid_autocomplete, previous, NULL);
} }
return result; return result;