Compare commits
2 Commits
91db8e6e54
...
ef8f25d1dd
Author | SHA1 | Date | |
---|---|---|---|
ef8f25d1dd | |||
313a65180e |
33
xC.c
33
xC.c
@ -789,7 +789,7 @@ input_el__redisplay (void *input)
|
||||
static char *
|
||||
input_el__make_prompt (EditLine *editline)
|
||||
{
|
||||
struct input_el *self;
|
||||
struct input_el *self = NULL;
|
||||
el_get (editline, EL_CLIENTDATA, &self);
|
||||
if (!self->prompt)
|
||||
return "";
|
||||
@ -1058,8 +1058,13 @@ input_el_buffer_switch (void *input, input_buffer_t input_buffer)
|
||||
static void
|
||||
input_el_buffer_destroy (void *input, input_buffer_t input_buffer)
|
||||
{
|
||||
(void) input;
|
||||
struct input_el *self = input;
|
||||
struct input_el_buffer *buffer = input_buffer;
|
||||
if (self->active && self->current == buffer)
|
||||
{
|
||||
el_wset (self->editline, EL_HIST, history, NULL);
|
||||
self->current = NULL;
|
||||
}
|
||||
|
||||
history_wend (buffer->history);
|
||||
free (buffer->saved_line);
|
||||
@ -4349,6 +4354,10 @@ buffer_print_read_marker (struct app_context *ctx, FILE *stream, int flush_opts)
|
||||
static void
|
||||
buffer_print_backlog (struct app_context *ctx, struct buffer *buffer)
|
||||
{
|
||||
// Buffers can be activated, or their lines modified, as automatic actions.
|
||||
if (ctx->terminal_suspended)
|
||||
return;
|
||||
|
||||
// The prompt can take considerable time to redraw
|
||||
CALL (ctx->input, hide);
|
||||
|
||||
@ -4613,11 +4622,24 @@ irc_make_buffer_name (struct server *s, const char *target)
|
||||
if (!target)
|
||||
return xstrdup (s->name);
|
||||
|
||||
// XXX: this may be able to trigger the uniqueness assertion with non-UTF-8
|
||||
char *target_utf8 = irc_to_utf8 (target);
|
||||
char *result = xstrdup_printf ("%s.%s", s->name, target_utf8);
|
||||
char *name = xstrdup_printf ("%s.%s", s->name, target_utf8);
|
||||
free (target_utf8);
|
||||
return result;
|
||||
|
||||
struct buffer *conflict = buffer_by_name (s->ctx, name);
|
||||
if (!conflict)
|
||||
return name;
|
||||
|
||||
hard_assert (conflict->server == s);
|
||||
|
||||
// Fix up any conflicts. Note that while parentheses aren't allowed
|
||||
// in IRC nicknames, they may occur in channel names.
|
||||
int i = 0;
|
||||
char *unique = xstrdup_printf ("%s(%d)", name, ++i);
|
||||
while (buffer_by_name (s->ctx, unique))
|
||||
cstr_set (&unique, xstrdup_printf ("%s(%d)", name, ++i));
|
||||
free (name);
|
||||
return unique;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -11269,6 +11291,7 @@ handle_command_buffer (struct handler_args *a)
|
||||
else if (!strcasecmp_ascii (action, "clear"))
|
||||
{
|
||||
buffer_clear (a->buffer);
|
||||
if (a->buffer == ctx->current_buffer)
|
||||
buffer_print_backlog (ctx, a->buffer);
|
||||
}
|
||||
else if (!strcasecmp_ascii (action, "move"))
|
||||
|
Loading…
x
Reference in New Issue
Block a user