mirror of
https://github.com/profanity-im/profanity.git
synced 2024-12-04 14:46:46 -05:00
Add fields to command autocompleter on switch/previous/next
This commit is contained in:
parent
bd03bbad73
commit
6246c8b940
@ -53,6 +53,7 @@
|
||||
#include "contact.h"
|
||||
#include "roster_list.h"
|
||||
#include "jid.h"
|
||||
#include "xmpp/form.h"
|
||||
#include "log.h"
|
||||
#include "muc.h"
|
||||
#ifdef HAVE_LIBOTR
|
||||
@ -1420,6 +1421,40 @@ cmd_autocomplete_add(char *value)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
cmd_autocomplete_add_form_fields(DataForm *form)
|
||||
{
|
||||
if (form) {
|
||||
GSList *fields = autocomplete_create_list(form->tag_ac);
|
||||
GSList *curr_field = fields;
|
||||
while (curr_field) {
|
||||
GString *field_str = g_string_new("/");
|
||||
g_string_append(field_str, curr_field->data);
|
||||
cmd_autocomplete_add(field_str->str);
|
||||
g_string_free(field_str, TRUE);
|
||||
curr_field = g_slist_next(curr_field);
|
||||
}
|
||||
g_slist_free_full(fields, free);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
cmd_autocomplete_remove_form_fields(DataForm *form)
|
||||
{
|
||||
if (form) {
|
||||
GSList *fields = autocomplete_create_list(form->tag_ac);
|
||||
GSList *curr_field = fields;
|
||||
while (curr_field) {
|
||||
GString *field_str = g_string_new("/");
|
||||
g_string_append(field_str, curr_field->data);
|
||||
cmd_autocomplete_remove(field_str->str);
|
||||
g_string_free(field_str, TRUE);
|
||||
curr_field = g_slist_next(curr_field);
|
||||
}
|
||||
g_slist_free_full(fields, free);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
cmd_autocomplete_remove(char *value)
|
||||
{
|
||||
|
@ -37,6 +37,8 @@
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include "xmpp/form.h"
|
||||
|
||||
GHashTable *commands;
|
||||
|
||||
void cmd_init(void);
|
||||
@ -46,6 +48,8 @@ void cmd_autocomplete(char *input, int *size);
|
||||
void cmd_reset_autocomplete(void);
|
||||
void cmd_autocomplete_add(char *value);
|
||||
void cmd_autocomplete_remove(char *value);
|
||||
void cmd_autocomplete_add_form_fields(DataForm *form);
|
||||
void cmd_autocomplete_remove_form_fields(DataForm *form);
|
||||
void cmd_alias_add(char *value);
|
||||
void cmd_alias_remove(char *value);
|
||||
|
||||
|
@ -726,7 +726,16 @@ static gboolean
|
||||
_ui_switch_win(const int i)
|
||||
{
|
||||
if (ui_win_exists(i)) {
|
||||
ProfWin *old_current = wins_get_current();
|
||||
if (old_current->type == WIN_MUC_CONFIG) {
|
||||
cmd_autocomplete_remove_form_fields(old_current->form);
|
||||
}
|
||||
|
||||
ProfWin *new_current = wins_get_by_num(i);
|
||||
if (new_current->type == WIN_MUC_CONFIG) {
|
||||
cmd_autocomplete_add_form_fields(new_current->form);
|
||||
}
|
||||
|
||||
wins_set_current_by_num(i);
|
||||
|
||||
new_current->unread = 0;
|
||||
@ -751,7 +760,16 @@ _ui_switch_win(const int i)
|
||||
static void
|
||||
_ui_previous_win(void)
|
||||
{
|
||||
ProfWin *old_current = wins_get_current();
|
||||
if (old_current->type == WIN_MUC_CONFIG) {
|
||||
cmd_autocomplete_remove_form_fields(old_current->form);
|
||||
}
|
||||
|
||||
ProfWin *new_current = wins_get_previous();
|
||||
if (new_current->type == WIN_MUC_CONFIG) {
|
||||
cmd_autocomplete_add_form_fields(new_current->form);
|
||||
}
|
||||
|
||||
int i = wins_get_num(new_current);
|
||||
wins_set_current_by_num(i);
|
||||
|
||||
@ -773,7 +791,16 @@ _ui_previous_win(void)
|
||||
static void
|
||||
_ui_next_win(void)
|
||||
{
|
||||
ProfWin *old_current = wins_get_current();
|
||||
if (old_current->type == WIN_MUC_CONFIG) {
|
||||
cmd_autocomplete_remove_form_fields(old_current->form);
|
||||
}
|
||||
|
||||
ProfWin *new_current = wins_get_next();
|
||||
if (new_current->type == WIN_MUC_CONFIG) {
|
||||
cmd_autocomplete_add_form_fields(new_current->form);
|
||||
}
|
||||
|
||||
int i = wins_get_num(new_current);
|
||||
wins_set_current_by_num(i);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user