1
0
mirror of https://github.com/profanity-im/profanity.git synced 2025-01-03 14:57:42 -05:00

Use getc wrapper for autocomplete reset check

This commit is contained in:
James Booth 2015-02-01 20:14:07 +00:00
parent a9af8785a7
commit 702ea0b5f3

View File

@ -77,6 +77,17 @@ static int pad_start = 0;
static void _inp_win_update_virtual(void);
static int
_printable(const wint_t ch)
{
char bytes[MB_CUR_MAX+1];
size_t utf_len = wcrtomb(bytes, ch, NULL);
bytes[utf_len] = '\0';
gunichar unichar = g_utf8_get_char(bytes);
return g_unichar_isprint(unichar) && (ch != KEY_MOUSE);
}
static void
cb_linehandler(char *line)
{
@ -88,6 +99,16 @@ cb_linehandler(char *line)
free(line);
}
int
prof_rl_getc(FILE *filein)
{
int ch = rl_getc(filein);
if (_printable(ch)) {
cmd_reset_autocomplete();
}
return ch;
}
void
resize_signal_handler(int signal)
{
@ -282,6 +303,7 @@ create_input_window(void)
p_rl_timeout.tv_sec = 0;
p_rl_timeout.tv_usec = inp_timeout * 1000;
rl_startup_hook = startup_hook;
rl_getc_function = prof_rl_getc;
rl_callback_handler_install(NULL, cb_linehandler);
signal(SIGWINCH, resize_signal_handler);
@ -397,17 +419,6 @@ inp_write(char *line, int offset)
_inp_win_update_virtual();
}
static int
_printable(const wint_t ch)
{
char bytes[MB_CUR_MAX+1];
size_t utf_len = wcrtomb(bytes, ch, NULL);
bytes[utf_len] = '\0';
gunichar unichar = g_utf8_get_char(bytes);
return g_unichar_isprint(unichar) && (ch != KEY_MOUSE);
}
gboolean
inp_readline(void)
{
@ -420,10 +431,6 @@ inp_readline(void)
}
if (FD_ISSET(fileno(rl_instream), &fds)) {
if (_printable(rl_executing_key)) {
cmd_reset_autocomplete();
}
rl_callback_read_char();
if (rl_line_buffer && rl_line_buffer[0] != '/' && rl_line_buffer[0] != '\0' && rl_line_buffer[0] != '\n') {