mirror of
https://github.com/profanity-im/profanity.git
synced 2024-11-03 19:37:16 -05:00
Moved remaining autocomplete code to command.c
This commit is contained in:
parent
34392622ea
commit
6a32ed4571
188
src/command.c
188
src/command.c
@ -51,7 +51,6 @@ typedef char*(*autocomplete_func)(char *);
|
|||||||
struct cmd_t {
|
struct cmd_t {
|
||||||
const gchar *cmd;
|
const gchar *cmd;
|
||||||
gboolean (*func)(const char * const inp, struct cmd_help_t help);
|
gboolean (*func)(const char * const inp, struct cmd_help_t help);
|
||||||
autocomplete_func complete_func;
|
|
||||||
struct cmd_help_t help;
|
struct cmd_help_t help;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -61,7 +60,15 @@ static void _update_presence(const jabber_presence_t presence,
|
|||||||
static gboolean _cmd_set_boolean_preference(const char * const inp,
|
static gboolean _cmd_set_boolean_preference(const char * const inp,
|
||||||
struct cmd_help_t help, const char * const cmd_str, const char * const display,
|
struct cmd_help_t help, const char * const cmd_str, const char * const display,
|
||||||
void (*set_func)(gboolean));
|
void (*set_func)(gboolean));
|
||||||
|
|
||||||
|
static char *_cmd_complete(char *inp);
|
||||||
|
static void _cmd_reset_command_completer(void);
|
||||||
static char *_cmd_help_complete(char *inp);
|
static char *_cmd_help_complete(char *inp);
|
||||||
|
static void _cmd_help_reset_completer(void);
|
||||||
|
static char *_cmd_notify_complete(char *inp);
|
||||||
|
static void _cmd_notify_reset_completer(void);
|
||||||
|
static void _cmd_complete_parameters(char *input, int *size);
|
||||||
|
static void _notify_autocomplete(char *input, int *size);
|
||||||
static void _parameter_autocomplete(char *input, int *size, char *command,
|
static void _parameter_autocomplete(char *input, int *size, char *command,
|
||||||
autocomplete_func func);
|
autocomplete_func func);
|
||||||
|
|
||||||
@ -100,7 +107,6 @@ static struct cmd_t main_commands[] =
|
|||||||
{
|
{
|
||||||
{ "/help",
|
{ "/help",
|
||||||
_cmd_help,
|
_cmd_help,
|
||||||
_cmd_help_complete,
|
|
||||||
{ "/help [area|command]", "Show help summary, or help on a specific area or command",
|
{ "/help [area|command]", "Show help summary, or help on a specific area or command",
|
||||||
{ "/help [area|command]",
|
{ "/help [area|command]",
|
||||||
"--------------------",
|
"--------------------",
|
||||||
@ -114,7 +120,6 @@ static struct cmd_t main_commands[] =
|
|||||||
|
|
||||||
{ "/about",
|
{ "/about",
|
||||||
_cmd_about,
|
_cmd_about,
|
||||||
NULL,
|
|
||||||
{ "/about", "About Profanity",
|
{ "/about", "About Profanity",
|
||||||
{ "/about",
|
{ "/about",
|
||||||
"------",
|
"------",
|
||||||
@ -123,7 +128,6 @@ static struct cmd_t main_commands[] =
|
|||||||
|
|
||||||
{ "/connect",
|
{ "/connect",
|
||||||
_cmd_connect,
|
_cmd_connect,
|
||||||
prefs_find_login,
|
|
||||||
{ "/connect user@host", "Login to jabber.",
|
{ "/connect user@host", "Login to jabber.",
|
||||||
{ "/connect user@host",
|
{ "/connect user@host",
|
||||||
"------------------",
|
"------------------",
|
||||||
@ -136,7 +140,6 @@ static struct cmd_t main_commands[] =
|
|||||||
|
|
||||||
{ "/disconnect",
|
{ "/disconnect",
|
||||||
_cmd_disconnect,
|
_cmd_disconnect,
|
||||||
NULL,
|
|
||||||
{ "/disconnect", "Logout of current jabber session.",
|
{ "/disconnect", "Logout of current jabber session.",
|
||||||
{ "/disconnect",
|
{ "/disconnect",
|
||||||
"------------------",
|
"------------------",
|
||||||
@ -146,7 +149,6 @@ static struct cmd_t main_commands[] =
|
|||||||
|
|
||||||
{ "/prefs",
|
{ "/prefs",
|
||||||
_cmd_prefs,
|
_cmd_prefs,
|
||||||
NULL,
|
|
||||||
{ "/prefs", "Show current preferences.",
|
{ "/prefs", "Show current preferences.",
|
||||||
{ "/prefs",
|
{ "/prefs",
|
||||||
"------",
|
"------",
|
||||||
@ -161,7 +163,6 @@ static struct cmd_t main_commands[] =
|
|||||||
|
|
||||||
{ "/msg",
|
{ "/msg",
|
||||||
_cmd_msg,
|
_cmd_msg,
|
||||||
contact_list_find_contact,
|
|
||||||
{ "/msg user@host mesg", "Send mesg to user.",
|
{ "/msg user@host mesg", "Send mesg to user.",
|
||||||
{ "/msg user@host mesg",
|
{ "/msg user@host mesg",
|
||||||
"-------------------",
|
"-------------------",
|
||||||
@ -177,7 +178,6 @@ static struct cmd_t main_commands[] =
|
|||||||
|
|
||||||
{ "/tiny",
|
{ "/tiny",
|
||||||
_cmd_tiny,
|
_cmd_tiny,
|
||||||
NULL,
|
|
||||||
{ "/tiny url", "Send url as tinyurl in current chat.",
|
{ "/tiny url", "Send url as tinyurl in current chat.",
|
||||||
{ "/tiny url",
|
{ "/tiny url",
|
||||||
"---------",
|
"---------",
|
||||||
@ -190,7 +190,6 @@ static struct cmd_t main_commands[] =
|
|||||||
|
|
||||||
{ "/who",
|
{ "/who",
|
||||||
_cmd_who,
|
_cmd_who,
|
||||||
NULL,
|
|
||||||
{ "/who [status]", "Show contacts with chosen status.",
|
{ "/who [status]", "Show contacts with chosen status.",
|
||||||
{ "/who [status]",
|
{ "/who [status]",
|
||||||
"-------------",
|
"-------------",
|
||||||
@ -201,7 +200,6 @@ static struct cmd_t main_commands[] =
|
|||||||
|
|
||||||
{ "/close",
|
{ "/close",
|
||||||
_cmd_close,
|
_cmd_close,
|
||||||
NULL,
|
|
||||||
{ "/close", "Close current chat window.",
|
{ "/close", "Close current chat window.",
|
||||||
{ "/close",
|
{ "/close",
|
||||||
"------",
|
"------",
|
||||||
@ -211,7 +209,6 @@ static struct cmd_t main_commands[] =
|
|||||||
|
|
||||||
{ "/quit",
|
{ "/quit",
|
||||||
_cmd_quit,
|
_cmd_quit,
|
||||||
NULL,
|
|
||||||
{ "/quit", "Quit Profanity.",
|
{ "/quit", "Quit Profanity.",
|
||||||
{ "/quit",
|
{ "/quit",
|
||||||
"-----",
|
"-----",
|
||||||
@ -223,7 +220,6 @@ static struct cmd_t setting_commands[] =
|
|||||||
{
|
{
|
||||||
{ "/beep",
|
{ "/beep",
|
||||||
_cmd_set_beep,
|
_cmd_set_beep,
|
||||||
prefs_autocomplete_boolean_choice,
|
|
||||||
{ "/beep on|off", "Terminal beep on new messages.",
|
{ "/beep on|off", "Terminal beep on new messages.",
|
||||||
{ "/beep on|off",
|
{ "/beep on|off",
|
||||||
"------------",
|
"------------",
|
||||||
@ -238,7 +234,6 @@ static struct cmd_t setting_commands[] =
|
|||||||
|
|
||||||
{ "/notify",
|
{ "/notify",
|
||||||
_cmd_set_notify,
|
_cmd_set_notify,
|
||||||
NULL,
|
|
||||||
{ "/notify type value", "Control various desktop noficiations.",
|
{ "/notify type value", "Control various desktop noficiations.",
|
||||||
{ "/notify type value",
|
{ "/notify type value",
|
||||||
"------------------",
|
"------------------",
|
||||||
@ -264,7 +259,6 @@ static struct cmd_t setting_commands[] =
|
|||||||
|
|
||||||
{ "/flash",
|
{ "/flash",
|
||||||
_cmd_set_flash,
|
_cmd_set_flash,
|
||||||
prefs_autocomplete_boolean_choice,
|
|
||||||
{ "/flash on|off", "Terminal flash on new messages.",
|
{ "/flash on|off", "Terminal flash on new messages.",
|
||||||
{ "/flash on|off",
|
{ "/flash on|off",
|
||||||
"-------------",
|
"-------------",
|
||||||
@ -279,7 +273,6 @@ static struct cmd_t setting_commands[] =
|
|||||||
|
|
||||||
{ "/intype",
|
{ "/intype",
|
||||||
_cmd_set_intype,
|
_cmd_set_intype,
|
||||||
prefs_autocomplete_boolean_choice,
|
|
||||||
{ "/intype on|off", "Show when contact is typing.",
|
{ "/intype on|off", "Show when contact is typing.",
|
||||||
{ "/intype on|off",
|
{ "/intype on|off",
|
||||||
"--------------",
|
"--------------",
|
||||||
@ -291,7 +284,6 @@ static struct cmd_t setting_commands[] =
|
|||||||
|
|
||||||
{ "/showsplash",
|
{ "/showsplash",
|
||||||
_cmd_set_showsplash,
|
_cmd_set_showsplash,
|
||||||
prefs_autocomplete_boolean_choice,
|
|
||||||
{ "/showsplash on|off", "Splash logo on startup.",
|
{ "/showsplash on|off", "Splash logo on startup.",
|
||||||
{ "/showsplash on|off",
|
{ "/showsplash on|off",
|
||||||
"------------------",
|
"------------------",
|
||||||
@ -303,7 +295,6 @@ static struct cmd_t setting_commands[] =
|
|||||||
|
|
||||||
{ "/vercheck",
|
{ "/vercheck",
|
||||||
_cmd_vercheck,
|
_cmd_vercheck,
|
||||||
prefs_autocomplete_boolean_choice,
|
|
||||||
{ "/vercheck [on|off]", "Check for a new release.",
|
{ "/vercheck [on|off]", "Check for a new release.",
|
||||||
{ "/vercheck [on|off]",
|
{ "/vercheck [on|off]",
|
||||||
"------------------",
|
"------------------",
|
||||||
@ -314,7 +305,6 @@ static struct cmd_t setting_commands[] =
|
|||||||
|
|
||||||
{ "/chlog",
|
{ "/chlog",
|
||||||
_cmd_set_chlog,
|
_cmd_set_chlog,
|
||||||
prefs_autocomplete_boolean_choice,
|
|
||||||
{ "/chlog on|off", "Chat logging to file",
|
{ "/chlog on|off", "Chat logging to file",
|
||||||
{ "/chlog on|off",
|
{ "/chlog on|off",
|
||||||
"-------------",
|
"-------------",
|
||||||
@ -331,7 +321,6 @@ static struct cmd_t setting_commands[] =
|
|||||||
|
|
||||||
{ "/history",
|
{ "/history",
|
||||||
_cmd_set_history,
|
_cmd_set_history,
|
||||||
prefs_autocomplete_boolean_choice,
|
|
||||||
{ "/history on|off", "Chat history in message windows.",
|
{ "/history on|off", "Chat history in message windows.",
|
||||||
{ "/history on|off",
|
{ "/history on|off",
|
||||||
"-------------",
|
"-------------",
|
||||||
@ -347,7 +336,6 @@ static struct cmd_t status_commands[] =
|
|||||||
{
|
{
|
||||||
{ "/away",
|
{ "/away",
|
||||||
_cmd_away,
|
_cmd_away,
|
||||||
NULL,
|
|
||||||
{ "/away [msg]", "Set status to away.",
|
{ "/away [msg]", "Set status to away.",
|
||||||
{ "/away [msg]",
|
{ "/away [msg]",
|
||||||
"-----------",
|
"-----------",
|
||||||
@ -359,7 +347,6 @@ static struct cmd_t status_commands[] =
|
|||||||
|
|
||||||
{ "/chat",
|
{ "/chat",
|
||||||
_cmd_chat,
|
_cmd_chat,
|
||||||
NULL,
|
|
||||||
{ "/chat [msg]", "Set status to chat (available for chat).",
|
{ "/chat [msg]", "Set status to chat (available for chat).",
|
||||||
{ "/chat [msg]",
|
{ "/chat [msg]",
|
||||||
"-----------",
|
"-----------",
|
||||||
@ -372,7 +359,6 @@ static struct cmd_t status_commands[] =
|
|||||||
|
|
||||||
{ "/dnd",
|
{ "/dnd",
|
||||||
_cmd_dnd,
|
_cmd_dnd,
|
||||||
NULL,
|
|
||||||
{ "/dnd [msg]", "Set status to dnd (do not disturb.",
|
{ "/dnd [msg]", "Set status to dnd (do not disturb.",
|
||||||
{ "/dnd [msg]",
|
{ "/dnd [msg]",
|
||||||
"----------",
|
"----------",
|
||||||
@ -385,7 +371,6 @@ static struct cmd_t status_commands[] =
|
|||||||
|
|
||||||
{ "/online",
|
{ "/online",
|
||||||
_cmd_online,
|
_cmd_online,
|
||||||
NULL,
|
|
||||||
{ "/online [msg]", "Set status to online.",
|
{ "/online [msg]", "Set status to online.",
|
||||||
{ "/online [msg]",
|
{ "/online [msg]",
|
||||||
"-------------",
|
"-------------",
|
||||||
@ -397,7 +382,6 @@ static struct cmd_t status_commands[] =
|
|||||||
|
|
||||||
{ "/xa",
|
{ "/xa",
|
||||||
_cmd_xa,
|
_cmd_xa,
|
||||||
NULL,
|
|
||||||
{ "/xa [msg]", "Set status to xa (extended away).",
|
{ "/xa [msg]", "Set status to xa (extended away).",
|
||||||
{ "/xa [msg]",
|
{ "/xa [msg]",
|
||||||
"---------",
|
"---------",
|
||||||
@ -462,43 +446,41 @@ cmd_close(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Command autocompletion functions
|
// Command autocompletion functions
|
||||||
|
void
|
||||||
char *
|
cmd_autocomplete(char *input, int *size)
|
||||||
cmd_complete(char *inp)
|
|
||||||
{
|
{
|
||||||
return p_autocomplete_complete(commands_ac, inp);
|
int i = 0;
|
||||||
|
char *found = NULL;
|
||||||
|
char *auto_msg = NULL;
|
||||||
|
char inp_cpy[*size];
|
||||||
|
|
||||||
|
if ((strncmp(input, "/", 1) == 0) && (!str_contains(input, *size, ' '))) {
|
||||||
|
for(i = 0; i < *size; i++) {
|
||||||
|
inp_cpy[i] = input[i];
|
||||||
|
}
|
||||||
|
inp_cpy[i] = '\0';
|
||||||
|
found = _cmd_complete(inp_cpy);
|
||||||
|
if (found != NULL) {
|
||||||
|
auto_msg = (char *) malloc((strlen(found) + 1) * sizeof(char));
|
||||||
|
strcpy(auto_msg, found);
|
||||||
|
inp_replace_input(input, auto_msg, size);
|
||||||
|
free(auto_msg);
|
||||||
|
free(found);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_cmd_complete_parameters(input, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cmd_reset_completer(void)
|
cmd_reset_autocomplete()
|
||||||
{
|
{
|
||||||
p_autocomplete_reset(commands_ac);
|
contact_list_reset_search_attempts();
|
||||||
}
|
prefs_reset_login_search();
|
||||||
|
prefs_reset_boolean_choice();
|
||||||
// Command help autocomplete
|
_cmd_help_reset_completer();
|
||||||
static char *
|
_cmd_notify_reset_completer();
|
||||||
_cmd_help_complete(char *inp)
|
_cmd_reset_command_completer();
|
||||||
{
|
|
||||||
return p_autocomplete_complete(help_ac, inp);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
cmd_help_reset_completer(void)
|
|
||||||
{
|
|
||||||
p_autocomplete_reset(help_ac);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Command notify autcomplete
|
|
||||||
char *
|
|
||||||
cmd_notify_complete(char *inp)
|
|
||||||
{
|
|
||||||
return p_autocomplete_complete(notify_ac, inp);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
cmd_notify_reset_completer(void)
|
|
||||||
{
|
|
||||||
p_autocomplete_reset(notify_ac);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GSList *
|
GSList *
|
||||||
@ -575,8 +557,44 @@ cmd_execute_default(const char * const inp)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static char *
|
||||||
cmd_complete_parameters(char *input, int *size)
|
_cmd_complete(char *inp)
|
||||||
|
{
|
||||||
|
return p_autocomplete_complete(commands_ac, inp);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_cmd_reset_command_completer(void)
|
||||||
|
{
|
||||||
|
p_autocomplete_reset(commands_ac);
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
_cmd_help_complete(char *inp)
|
||||||
|
{
|
||||||
|
return p_autocomplete_complete(help_ac, inp);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_cmd_help_reset_completer(void)
|
||||||
|
{
|
||||||
|
p_autocomplete_reset(help_ac);
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
_cmd_notify_complete(char *inp)
|
||||||
|
{
|
||||||
|
return p_autocomplete_complete(notify_ac, inp);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_cmd_notify_reset_completer(void)
|
||||||
|
{
|
||||||
|
p_autocomplete_reset(notify_ac);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_cmd_complete_parameters(char *input, int *size)
|
||||||
{
|
{
|
||||||
_parameter_autocomplete(input, size, "/beep",
|
_parameter_autocomplete(input, size, "/beep",
|
||||||
prefs_autocomplete_boolean_choice);
|
prefs_autocomplete_boolean_choice);
|
||||||
@ -599,6 +617,8 @@ cmd_complete_parameters(char *input, int *size)
|
|||||||
prefs_find_login);
|
prefs_find_login);
|
||||||
_parameter_autocomplete(input, size, "/help",
|
_parameter_autocomplete(input, size, "/help",
|
||||||
_cmd_help_complete);
|
_cmd_help_complete);
|
||||||
|
|
||||||
|
_notify_autocomplete(input, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
// The command functions
|
// The command functions
|
||||||
@ -1200,3 +1220,55 @@ _parameter_autocomplete(char *input, int *size, char *command,
|
|||||||
free(command_cpy);
|
free(command_cpy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_notify_autocomplete(char *input, int *size)
|
||||||
|
{
|
||||||
|
char *found = NULL;
|
||||||
|
char *auto_msg = NULL;
|
||||||
|
char inp_cpy[*size];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if ((strncmp(input, "/notify message ", 16) == 0) && (*size > 16)) {
|
||||||
|
for(i = 16; i < *size; i++) {
|
||||||
|
inp_cpy[i-16] = input[i];
|
||||||
|
}
|
||||||
|
inp_cpy[(*size) - 16] = '\0';
|
||||||
|
found = prefs_autocomplete_boolean_choice(inp_cpy);
|
||||||
|
if (found != NULL) {
|
||||||
|
auto_msg = (char *) malloc((16 + (strlen(found) + 1)) * sizeof(char));
|
||||||
|
strcpy(auto_msg, "/notify message ");
|
||||||
|
strcat(auto_msg, found);
|
||||||
|
inp_replace_input(input, auto_msg, size);
|
||||||
|
free(auto_msg);
|
||||||
|
free(found);
|
||||||
|
}
|
||||||
|
} else if ((strncmp(input, "/notify typing ", 15) == 0) && (*size > 15)) {
|
||||||
|
for(i = 15; i < *size; i++) {
|
||||||
|
inp_cpy[i-15] = input[i];
|
||||||
|
}
|
||||||
|
inp_cpy[(*size) - 15] = '\0';
|
||||||
|
found = prefs_autocomplete_boolean_choice(inp_cpy);
|
||||||
|
if (found != NULL) {
|
||||||
|
auto_msg = (char *) malloc((15 + (strlen(found) + 1)) * sizeof(char));
|
||||||
|
strcpy(auto_msg, "/notify typing ");
|
||||||
|
strcat(auto_msg, found);
|
||||||
|
inp_replace_input(input, auto_msg, size);
|
||||||
|
free(auto_msg);
|
||||||
|
free(found);
|
||||||
|
}
|
||||||
|
} else if ((strncmp(input, "/notify ", 8) == 0) && (*size > 8)) {
|
||||||
|
for(i = 8; i < *size; i++) {
|
||||||
|
inp_cpy[i-8] = input[i];
|
||||||
|
}
|
||||||
|
inp_cpy[(*size) - 8] = '\0';
|
||||||
|
found = _cmd_notify_complete(inp_cpy);
|
||||||
|
if (found != NULL) {
|
||||||
|
auto_msg = (char *) malloc((8 + (strlen(found) + 1)) * sizeof(char));
|
||||||
|
strcpy(auto_msg, "/notify ");
|
||||||
|
strcat(auto_msg, found);
|
||||||
|
inp_replace_input(input, auto_msg, size);
|
||||||
|
free(auto_msg);
|
||||||
|
free(found);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -34,17 +34,13 @@ struct cmd_help_t {
|
|||||||
|
|
||||||
void cmd_init(void);
|
void cmd_init(void);
|
||||||
void cmd_close(void);
|
void cmd_close(void);
|
||||||
char * cmd_complete(char *inp);
|
|
||||||
void cmd_reset_completer(void);
|
void cmd_autocomplete(char *input, int *size);
|
||||||
void cmd_complete_parameters(char *input, int *size);
|
void cmd_reset_autocomplete(void);
|
||||||
|
|
||||||
gboolean cmd_execute(const char * const command, const char * const inp);
|
gboolean cmd_execute(const char * const command, const char * const inp);
|
||||||
gboolean cmd_execute_default(const char * const inp);
|
gboolean cmd_execute_default(const char * const inp);
|
||||||
|
|
||||||
// command help
|
|
||||||
char * cmd_help_complete(char *inp);
|
|
||||||
char * cmd_notify_complete(char *inp);
|
|
||||||
void cmd_help_reset_completer(void);
|
|
||||||
void cmd_notify_reset_completer(void);
|
|
||||||
GSList * cmd_get_basic_help(void);
|
GSList * cmd_get_basic_help(void);
|
||||||
GSList * cmd_get_settings_help(void);
|
GSList * cmd_get_settings_help(void);
|
||||||
GSList * cmd_get_status_help(void);
|
GSList * cmd_get_status_help(void);
|
||||||
|
@ -63,7 +63,6 @@ static int pad_start = 0;
|
|||||||
|
|
||||||
static int _handle_edit(const int ch, char *input, int *size);
|
static int _handle_edit(const int ch, char *input, int *size);
|
||||||
static int _printable(const int ch);
|
static int _printable(const int ch);
|
||||||
static void _notify_autocomplete(char *input, int *size);
|
|
||||||
|
|
||||||
void
|
void
|
||||||
create_input_window(void)
|
create_input_window(void)
|
||||||
@ -166,12 +165,7 @@ inp_get_char(int *ch, char *input, int *size)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
contact_list_reset_search_attempts();
|
cmd_reset_autocomplete();
|
||||||
prefs_reset_login_search();
|
|
||||||
prefs_reset_boolean_choice();
|
|
||||||
cmd_help_reset_completer();
|
|
||||||
cmd_notify_reset_completer();
|
|
||||||
cmd_reset_completer();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,11 +219,8 @@ _handle_edit(const int ch, char *input, int *size)
|
|||||||
int i, rows, cols;
|
int i, rows, cols;
|
||||||
char *prev = NULL;
|
char *prev = NULL;
|
||||||
char *next = NULL;
|
char *next = NULL;
|
||||||
char *found = NULL;
|
|
||||||
char *auto_msg = NULL;
|
|
||||||
int inp_y = 0;
|
int inp_y = 0;
|
||||||
int inp_x = 0;
|
int inp_x = 0;
|
||||||
char inp_cpy[*size];
|
|
||||||
|
|
||||||
getmaxyx(stdscr, rows, cols);
|
getmaxyx(stdscr, rows, cols);
|
||||||
getyx(inp_win, inp_y, inp_x);
|
getyx(inp_win, inp_y, inp_x);
|
||||||
@ -345,27 +336,7 @@ _handle_edit(const int ch, char *input, int *size)
|
|||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
case 9: // tab
|
case 9: // tab
|
||||||
|
cmd_autocomplete(input, size);
|
||||||
// autocomplete command
|
|
||||||
if ((strncmp(input, "/", 1) == 0) && (!str_contains(input, *size, ' '))) {
|
|
||||||
for(i = 0; i < *size; i++) {
|
|
||||||
inp_cpy[i] = input[i];
|
|
||||||
}
|
|
||||||
inp_cpy[i] = '\0';
|
|
||||||
found = cmd_complete(inp_cpy);
|
|
||||||
if (found != NULL) {
|
|
||||||
auto_msg = (char *) malloc((strlen(found) + 1) * sizeof(char));
|
|
||||||
strcpy(auto_msg, found);
|
|
||||||
inp_replace_input(input, auto_msg, size);
|
|
||||||
free(auto_msg);
|
|
||||||
free(found);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd_complete_parameters(input, size);
|
|
||||||
|
|
||||||
_notify_autocomplete(input, size);
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -385,55 +356,3 @@ _printable(const int ch)
|
|||||||
ch != KEY_IC && ch != KEY_EIC && ch != KEY_RESIZE);
|
ch != KEY_IC && ch != KEY_EIC && ch != KEY_RESIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
_notify_autocomplete(char *input, int *size)
|
|
||||||
{
|
|
||||||
char *found = NULL;
|
|
||||||
char *auto_msg = NULL;
|
|
||||||
char inp_cpy[*size];
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if ((strncmp(input, "/notify message ", 16) == 0) && (*size > 16)) {
|
|
||||||
for(i = 16; i < *size; i++) {
|
|
||||||
inp_cpy[i-16] = input[i];
|
|
||||||
}
|
|
||||||
inp_cpy[(*size) - 16] = '\0';
|
|
||||||
found = prefs_autocomplete_boolean_choice(inp_cpy);
|
|
||||||
if (found != NULL) {
|
|
||||||
auto_msg = (char *) malloc((16 + (strlen(found) + 1)) * sizeof(char));
|
|
||||||
strcpy(auto_msg, "/notify message ");
|
|
||||||
strcat(auto_msg, found);
|
|
||||||
inp_replace_input(input, auto_msg, size);
|
|
||||||
free(auto_msg);
|
|
||||||
free(found);
|
|
||||||
}
|
|
||||||
} else if ((strncmp(input, "/notify typing ", 15) == 0) && (*size > 15)) {
|
|
||||||
for(i = 15; i < *size; i++) {
|
|
||||||
inp_cpy[i-15] = input[i];
|
|
||||||
}
|
|
||||||
inp_cpy[(*size) - 15] = '\0';
|
|
||||||
found = prefs_autocomplete_boolean_choice(inp_cpy);
|
|
||||||
if (found != NULL) {
|
|
||||||
auto_msg = (char *) malloc((15 + (strlen(found) + 1)) * sizeof(char));
|
|
||||||
strcpy(auto_msg, "/notify typing ");
|
|
||||||
strcat(auto_msg, found);
|
|
||||||
inp_replace_input(input, auto_msg, size);
|
|
||||||
free(auto_msg);
|
|
||||||
free(found);
|
|
||||||
}
|
|
||||||
} else if ((strncmp(input, "/notify ", 8) == 0) && (*size > 8)) {
|
|
||||||
for(i = 8; i < *size; i++) {
|
|
||||||
inp_cpy[i-8] = input[i];
|
|
||||||
}
|
|
||||||
inp_cpy[(*size) - 8] = '\0';
|
|
||||||
found = cmd_notify_complete(inp_cpy);
|
|
||||||
if (found != NULL) {
|
|
||||||
auto_msg = (char *) malloc((8 + (strlen(found) + 1)) * sizeof(char));
|
|
||||||
strcpy(auto_msg, "/notify ");
|
|
||||||
strcat(auto_msg, found);
|
|
||||||
inp_replace_input(input, auto_msg, size);
|
|
||||||
free(auto_msg);
|
|
||||||
free(found);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user