mirror of
https://github.com/irssi/irssi.git
synced 2024-12-04 14:46:39 -05:00
Added escape_char /BIND command for inserting the next keypress to input
line. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2517 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
be0e7f04b7
commit
2bc09e0e50
@ -92,6 +92,7 @@ Command can be one of:
|
|||||||
refresh_screen
|
refresh_screen
|
||||||
yank_from_cutbuffer - "Undelete" line
|
yank_from_cutbuffer - "Undelete" line
|
||||||
transpose_characters - Swap current and previous character
|
transpose_characters - Swap current and previous character
|
||||||
|
escape_char - Insert the next character exactly as-is to input line
|
||||||
insert_text - Insert data to entry line, data may contain $variables.
|
insert_text - Insert data to entry line, data may contain $variables.
|
||||||
stop_irc - Send SIGSTOP to client (^Z)
|
stop_irc - Send SIGSTOP to client (^Z)
|
||||||
|
|
||||||
|
@ -48,6 +48,7 @@ typedef struct {
|
|||||||
|
|
||||||
static KEYBOARD_REC *keyboard;
|
static KEYBOARD_REC *keyboard;
|
||||||
static ENTRY_REDIRECT_REC *redir;
|
static ENTRY_REDIRECT_REC *redir;
|
||||||
|
static int escape_next_key;
|
||||||
|
|
||||||
static int readtag;
|
static int readtag;
|
||||||
static time_t idle_time;
|
static time_t idle_time;
|
||||||
@ -161,8 +162,9 @@ void handle_key(unichar key)
|
|||||||
str[utf16_char_to_utf8(key, str)] = '\0';
|
str[utf16_char_to_utf8(key, str)] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!key_pressed(keyboard, str)) {
|
if (escape_next_key || !key_pressed(keyboard, str)) {
|
||||||
/* key wasn't used for anything, print it */
|
/* key wasn't used for anything, print it */
|
||||||
|
escape_next_key = FALSE;
|
||||||
gui_entry_insert_char(active_entry, key);
|
gui_entry_insert_char(active_entry, key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -519,6 +521,11 @@ static void key_next_window_item(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void key_escape(void)
|
||||||
|
{
|
||||||
|
escape_next_key = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static void key_insert_text(const char *data)
|
static void key_insert_text(const char *data)
|
||||||
{
|
{
|
||||||
char *str;
|
char *str;
|
||||||
@ -566,6 +573,7 @@ void gui_readline_init(void)
|
|||||||
char *key, data[MAX_INT_STRLEN];
|
char *key, data[MAX_INT_STRLEN];
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
|
escape_next_key = FALSE;
|
||||||
redir = NULL;
|
redir = NULL;
|
||||||
idle_time = time(NULL);
|
idle_time = time(NULL);
|
||||||
input_listen_init(STDIN_FILENO);
|
input_listen_init(STDIN_FILENO);
|
||||||
@ -673,6 +681,7 @@ void gui_readline_init(void)
|
|||||||
key_bind("scroll_end", "End of the window", "", NULL, (SIGNAL_FUNC) key_scroll_end);
|
key_bind("scroll_end", "End of the window", "", NULL, (SIGNAL_FUNC) key_scroll_end);
|
||||||
|
|
||||||
/* inserting special input characters to line.. */
|
/* inserting special input characters to line.. */
|
||||||
|
key_bind("escape_char", "Escape the next keypress", NULL, NULL, (SIGNAL_FUNC) key_escape);
|
||||||
key_bind("insert_text", "Append text to line", NULL, NULL, (SIGNAL_FUNC) key_insert_text);
|
key_bind("insert_text", "Append text to line", NULL, NULL, (SIGNAL_FUNC) key_insert_text);
|
||||||
|
|
||||||
/* autoreplaces */
|
/* autoreplaces */
|
||||||
@ -743,6 +752,7 @@ void gui_readline_deinit(void)
|
|||||||
key_unbind("scroll_start", (SIGNAL_FUNC) key_scroll_start);
|
key_unbind("scroll_start", (SIGNAL_FUNC) key_scroll_start);
|
||||||
key_unbind("scroll_end", (SIGNAL_FUNC) key_scroll_end);
|
key_unbind("scroll_end", (SIGNAL_FUNC) key_scroll_end);
|
||||||
|
|
||||||
|
key_unbind("escape_char", (SIGNAL_FUNC) key_escape);
|
||||||
key_unbind("insert_text", (SIGNAL_FUNC) key_insert_text);
|
key_unbind("insert_text", (SIGNAL_FUNC) key_insert_text);
|
||||||
key_unbind("change_window", (SIGNAL_FUNC) key_change_window);
|
key_unbind("change_window", (SIGNAL_FUNC) key_change_window);
|
||||||
key_unbind("stop_irc", (SIGNAL_FUNC) key_sig_stop);
|
key_unbind("stop_irc", (SIGNAL_FUNC) key_sig_stop);
|
||||||
|
Loading…
Reference in New Issue
Block a user