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 * | static char * | ||||||
| input_el__make_prompt (EditLine *editline) | input_el__make_prompt (EditLine *editline) | ||||||
| { | { | ||||||
| 	struct input_el *self; | 	struct input_el *self = NULL; | ||||||
| 	el_get (editline, EL_CLIENTDATA, &self); | 	el_get (editline, EL_CLIENTDATA, &self); | ||||||
| 	if (!self->prompt) | 	if (!self->prompt) | ||||||
| 		return ""; | 		return ""; | ||||||
| @ -1058,8 +1058,13 @@ input_el_buffer_switch (void *input, input_buffer_t input_buffer) | |||||||
| static void | static void | ||||||
| input_el_buffer_destroy (void *input, input_buffer_t input_buffer) | 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; | 	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); | 	history_wend (buffer->history); | ||||||
| 	free (buffer->saved_line); | 	free (buffer->saved_line); | ||||||
| @ -4349,6 +4354,10 @@ buffer_print_read_marker (struct app_context *ctx, FILE *stream, int flush_opts) | |||||||
| static void | static void | ||||||
| buffer_print_backlog (struct app_context *ctx, struct buffer *buffer) | 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
 | 	// The prompt can take considerable time to redraw
 | ||||||
| 	CALL (ctx->input, hide); | 	CALL (ctx->input, hide); | ||||||
| 
 | 
 | ||||||
| @ -4613,11 +4622,24 @@ irc_make_buffer_name (struct server *s, const char *target) | |||||||
| 	if (!target) | 	if (!target) | ||||||
| 		return xstrdup (s->name); | 		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 *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); | 	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 | static void | ||||||
| @ -11269,6 +11291,7 @@ handle_command_buffer (struct handler_args *a) | |||||||
| 	else if (!strcasecmp_ascii (action, "clear")) | 	else if (!strcasecmp_ascii (action, "clear")) | ||||||
| 	{ | 	{ | ||||||
| 		buffer_clear (a->buffer); | 		buffer_clear (a->buffer); | ||||||
|  | 		if (a->buffer == ctx->current_buffer) | ||||||
| 			buffer_print_backlog (ctx, a->buffer); | 			buffer_print_backlog (ctx, a->buffer); | ||||||
| 	} | 	} | ||||||
| 	else if (!strcasecmp_ascii (action, "move")) | 	else if (!strcasecmp_ascii (action, "move")) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user