degesch: readline fixups
When a new buffer was created automatically (channel was joined), we didn't bother to erase the current line buffer.
This commit is contained in:
parent
25282cfe23
commit
e921a619b0
13
degesch.c
13
degesch.c
|
@ -226,8 +226,7 @@ input_erase (struct input *self)
|
||||||
(void) self;
|
(void) self;
|
||||||
|
|
||||||
rl_set_prompt ("");
|
rl_set_prompt ("");
|
||||||
rl_replace_line ("", 0);
|
rl_replace_line ("", false);
|
||||||
rl_point = rl_mark = 0;
|
|
||||||
rl_redisplay ();
|
rl_redisplay ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -325,12 +324,15 @@ input_save_buffer (struct input *self, struct input_buffer *buffer)
|
||||||
buffer->saved_line = rl_copy_text (0, rl_end);
|
buffer->saved_line = rl_copy_text (0, rl_end);
|
||||||
buffer->saved_point = rl_point;
|
buffer->saved_point = rl_point;
|
||||||
buffer->saved_mark = rl_mark;
|
buffer->saved_mark = rl_mark;
|
||||||
|
|
||||||
|
rl_replace_line ("", true);
|
||||||
|
if (self->prompt_shown > 0)
|
||||||
|
rl_redisplay ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
input_restore_buffer (struct input *self, struct input_buffer *buffer)
|
input_restore_buffer (struct input *self, struct input_buffer *buffer)
|
||||||
{
|
{
|
||||||
// Restore the target buffer's history
|
|
||||||
if (buffer->history)
|
if (buffer->history)
|
||||||
{
|
{
|
||||||
// history_get_history_state() just allocates a new HISTORY_STATE
|
// history_get_history_state() just allocates a new HISTORY_STATE
|
||||||
|
@ -352,10 +354,9 @@ input_restore_buffer (struct input *self, struct input_buffer *buffer)
|
||||||
free (state);
|
free (state);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to restore the target buffer's readline state
|
|
||||||
if (buffer->saved_line)
|
if (buffer->saved_line)
|
||||||
{
|
{
|
||||||
rl_replace_line (buffer->saved_line, 0);
|
rl_replace_line (buffer->saved_line, true);
|
||||||
rl_point = buffer->saved_point;
|
rl_point = buffer->saved_point;
|
||||||
rl_mark = buffer->saved_mark;
|
rl_mark = buffer->saved_mark;
|
||||||
free (buffer->saved_line);
|
free (buffer->saved_line);
|
||||||
|
@ -441,7 +442,7 @@ input_restore (struct input *self)
|
||||||
hard_assert (self->saved_line);
|
hard_assert (self->saved_line);
|
||||||
|
|
||||||
rl_set_prompt (self->prompt);
|
rl_set_prompt (self->prompt);
|
||||||
rl_replace_line (self->saved_line, 0);
|
rl_replace_line (self->saved_line, false);
|
||||||
rl_point = self->saved_point;
|
rl_point = self->saved_point;
|
||||||
rl_mark = self->saved_mark;
|
rl_mark = self->saved_mark;
|
||||||
free (self->saved_line);
|
free (self->saved_line);
|
||||||
|
|
Loading…
Reference in New Issue