mirror of
https://github.com/irssi/irssi.git
synced 2024-12-04 14:46:39 -05:00
if window-specific history is off, the command that closed the window should
go in the command history. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2267 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
4bc4da5c6b
commit
ba09b3f299
@ -30,6 +30,7 @@
|
|||||||
#include "translation.h"
|
#include "translation.h"
|
||||||
|
|
||||||
#include "term.h"
|
#include "term.h"
|
||||||
|
#include "detach.h"
|
||||||
#include "gui-entry.h"
|
#include "gui-entry.h"
|
||||||
#include "gui-windows.h"
|
#include "gui-windows.h"
|
||||||
|
|
||||||
@ -51,6 +52,25 @@ char *cutbuffer;
|
|||||||
static int readtag;
|
static int readtag;
|
||||||
static time_t idle_time;
|
static time_t idle_time;
|
||||||
|
|
||||||
|
static void sig_input(void);
|
||||||
|
|
||||||
|
void input_listen_init(int handle)
|
||||||
|
{
|
||||||
|
GIOChannel *stdin_channel;
|
||||||
|
|
||||||
|
stdin_channel = g_io_channel_unix_new(handle);
|
||||||
|
readtag = g_input_add_full(stdin_channel,
|
||||||
|
G_PRIORITY_HIGH, G_INPUT_READ,
|
||||||
|
(GInputFunction) sig_input, NULL);
|
||||||
|
g_io_channel_unref(stdin_channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
void input_listen_deinit(void)
|
||||||
|
{
|
||||||
|
g_source_remove(readtag);
|
||||||
|
readtag = -1;
|
||||||
|
}
|
||||||
|
|
||||||
static void handle_key_redirect(int key)
|
static void handle_key_redirect(int key)
|
||||||
{
|
{
|
||||||
ENTRY_REDIRECT_KEY_FUNC func;
|
ENTRY_REDIRECT_KEY_FUNC func;
|
||||||
@ -169,8 +189,9 @@ static void key_send_line(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (add_history != NULL) {
|
if (add_history != NULL) {
|
||||||
if (history_window != NULL &&
|
if (!settings_get_bool("window_history") ||
|
||||||
g_slist_find(windows, history_window) != NULL)
|
(history_window != NULL &&
|
||||||
|
g_slist_find(windows, history_window) != NULL))
|
||||||
command_history_add(history_window, add_history, FALSE);
|
command_history_add(history_window, add_history, FALSE);
|
||||||
g_free(add_history);
|
g_free(add_history);
|
||||||
}
|
}
|
||||||
@ -330,7 +351,7 @@ static void key_delete_to_next_space(void)
|
|||||||
gui_entry_erase_next_word(active_entry, TRUE);
|
gui_entry_erase_next_word(active_entry, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void readline(void)
|
static void sig_input(void)
|
||||||
{
|
{
|
||||||
unsigned char buffer[128];
|
unsigned char buffer[128];
|
||||||
int ret, i;
|
int ret, i;
|
||||||
@ -343,12 +364,14 @@ void readline(void)
|
|||||||
ret = term_gets(buffer, sizeof(buffer));
|
ret = term_gets(buffer, sizeof(buffer));
|
||||||
if (ret == -1) {
|
if (ret == -1) {
|
||||||
/* lost terminal */
|
/* lost terminal */
|
||||||
signal_emit("command quit", 1, "Lost terminal");
|
if (!term_detached)
|
||||||
return;
|
signal_emit("command quit", 1, "Lost terminal");
|
||||||
|
else
|
||||||
|
irssi_detach();
|
||||||
|
} else {
|
||||||
|
for (i = 0; i < ret; i++)
|
||||||
|
handle_key(buffer[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < ret; i++)
|
|
||||||
handle_key(buffer[i]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
time_t get_idle_time(void)
|
time_t get_idle_time(void)
|
||||||
@ -530,16 +553,11 @@ void gui_readline_init(void)
|
|||||||
static char changekeys[] = "1234567890qwertyuio";
|
static char changekeys[] = "1234567890qwertyuio";
|
||||||
char *key, data[MAX_INT_STRLEN];
|
char *key, data[MAX_INT_STRLEN];
|
||||||
int n;
|
int n;
|
||||||
GIOChannel *stdin_channel;
|
|
||||||
|
|
||||||
cutbuffer = NULL;
|
cutbuffer = NULL;
|
||||||
redir = NULL;
|
redir = NULL;
|
||||||
idle_time = time(NULL);
|
idle_time = time(NULL);
|
||||||
stdin_channel = g_io_channel_unix_new(0);
|
input_listen_init(STDIN_FILENO);
|
||||||
readtag = g_input_add_full(stdin_channel,
|
|
||||||
G_PRIORITY_HIGH, G_INPUT_READ,
|
|
||||||
(GInputFunction) readline, NULL);
|
|
||||||
g_io_channel_unref(stdin_channel);
|
|
||||||
|
|
||||||
settings_add_str("history", "scroll_page_count", "/2");
|
settings_add_str("history", "scroll_page_count", "/2");
|
||||||
|
|
||||||
@ -665,7 +683,7 @@ void gui_readline_init(void)
|
|||||||
void gui_readline_deinit(void)
|
void gui_readline_deinit(void)
|
||||||
{
|
{
|
||||||
g_free_not_null(cutbuffer);
|
g_free_not_null(cutbuffer);
|
||||||
g_source_remove(readtag);
|
input_listen_deinit();
|
||||||
|
|
||||||
key_configure_freeze();
|
key_configure_freeze();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user