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 "contact.h"
|
||||||
#include "roster_list.h"
|
#include "roster_list.h"
|
||||||
#include "jid.h"
|
#include "jid.h"
|
||||||
|
#include "xmpp/form.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "muc.h"
|
#include "muc.h"
|
||||||
#ifdef HAVE_LIBOTR
|
#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
|
void
|
||||||
cmd_autocomplete_remove(char *value)
|
cmd_autocomplete_remove(char *value)
|
||||||
{
|
{
|
||||||
|
@ -37,6 +37,8 @@
|
|||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
|
#include "xmpp/form.h"
|
||||||
|
|
||||||
GHashTable *commands;
|
GHashTable *commands;
|
||||||
|
|
||||||
void cmd_init(void);
|
void cmd_init(void);
|
||||||
@ -46,6 +48,8 @@ void cmd_autocomplete(char *input, int *size);
|
|||||||
void cmd_reset_autocomplete(void);
|
void cmd_reset_autocomplete(void);
|
||||||
void cmd_autocomplete_add(char *value);
|
void cmd_autocomplete_add(char *value);
|
||||||
void cmd_autocomplete_remove(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_add(char *value);
|
||||||
void cmd_alias_remove(char *value);
|
void cmd_alias_remove(char *value);
|
||||||
|
|
||||||
|
@ -726,7 +726,16 @@ static gboolean
|
|||||||
_ui_switch_win(const int i)
|
_ui_switch_win(const int i)
|
||||||
{
|
{
|
||||||
if (ui_win_exists(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);
|
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);
|
wins_set_current_by_num(i);
|
||||||
|
|
||||||
new_current->unread = 0;
|
new_current->unread = 0;
|
||||||
@ -751,7 +760,16 @@ _ui_switch_win(const int i)
|
|||||||
static void
|
static void
|
||||||
_ui_previous_win(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();
|
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);
|
int i = wins_get_num(new_current);
|
||||||
wins_set_current_by_num(i);
|
wins_set_current_by_num(i);
|
||||||
|
|
||||||
@ -773,7 +791,16 @@ _ui_previous_win(void)
|
|||||||
static void
|
static void
|
||||||
_ui_next_win(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();
|
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);
|
int i = wins_get_num(new_current);
|
||||||
wins_set_current_by_num(i);
|
wins_set_current_by_num(i);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user