xC/xP: implement M-H in the web frontend
This commit is contained in:
		
							
								
								
									
										14
									
								
								xC-proto
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								xC-proto
									
									
									
									
									
								
							@@ -9,24 +9,28 @@ struct CommandMessage {
 | 
			
		||||
	union CommandData switch (enum Command {
 | 
			
		||||
		HELLO,
 | 
			
		||||
		ACTIVE,
 | 
			
		||||
		BUFFER_INPUT,
 | 
			
		||||
		BUFFER_ACTIVATE,
 | 
			
		||||
		BUFFER_INPUT,
 | 
			
		||||
		BUFFER_TOGGLE_UNIMPORTANT,
 | 
			
		||||
		PING_RESPONSE,
 | 
			
		||||
		PING,
 | 
			
		||||
		BUFFER_COMPLETE,
 | 
			
		||||
		BUFFER_LOG,
 | 
			
		||||
	} command) {
 | 
			
		||||
	// If the version check succeeds, the client will receive
 | 
			
		||||
	// an initial stream of SERVER_UPDATE, BUFFER_UPDATE, BUFFER_STATS,
 | 
			
		||||
	// BUFFER_LINE, and finally a BUFFER_ACTIVATE message.
 | 
			
		||||
	case HELLO:
 | 
			
		||||
		u32 version;
 | 
			
		||||
		// If the version check succeeds, the client will receive
 | 
			
		||||
		// an initial stream of SERVER_UPDATE, BUFFER_UPDATE, BUFFER_STATS,
 | 
			
		||||
		// BUFFER_LINE, and finally a BUFFER_ACTIVATE message.
 | 
			
		||||
	case ACTIVE:
 | 
			
		||||
		void;
 | 
			
		||||
	case BUFFER_ACTIVATE:
 | 
			
		||||
		string buffer_name;
 | 
			
		||||
	case BUFFER_INPUT:
 | 
			
		||||
		string buffer_name;
 | 
			
		||||
		string text;
 | 
			
		||||
	case BUFFER_ACTIVATE:
 | 
			
		||||
	// XXX: Perhaps this should rather be handled through a /buffer command.
 | 
			
		||||
	case BUFFER_TOGGLE_UNIMPORTANT:
 | 
			
		||||
		string buffer_name;
 | 
			
		||||
	case PING_RESPONSE:
 | 
			
		||||
		u32 event_seq;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										32
									
								
								xC.c
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								xC.c
									
									
									
									
									
								
							@@ -5235,6 +5235,18 @@ buffer_clear (struct app_context *ctx, struct buffer *buffer)
 | 
			
		||||
	buffer->lines_count = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
buffer_toggle_unimportant (struct app_context *ctx, struct buffer *buffer)
 | 
			
		||||
{
 | 
			
		||||
	buffer->hide_unimportant ^= true;
 | 
			
		||||
 | 
			
		||||
	relay_prepare_buffer_update (ctx, buffer);
 | 
			
		||||
	relay_broadcast (ctx);
 | 
			
		||||
 | 
			
		||||
	if (buffer == ctx->current_buffer)
 | 
			
		||||
		buffer_print_backlog (ctx, buffer);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static struct buffer *
 | 
			
		||||
buffer_at_index (struct app_context *ctx, int n)
 | 
			
		||||
{
 | 
			
		||||
@@ -14372,12 +14384,7 @@ on_toggle_unimportant (int count, int key, void *user_data)
 | 
			
		||||
	(void) count;
 | 
			
		||||
	(void) key;
 | 
			
		||||
	struct app_context *ctx = user_data;
 | 
			
		||||
	ctx->current_buffer->hide_unimportant ^= true;
 | 
			
		||||
 | 
			
		||||
	relay_prepare_buffer_update (ctx, ctx->current_buffer);
 | 
			
		||||
	relay_broadcast (ctx);
 | 
			
		||||
 | 
			
		||||
	buffer_print_backlog (ctx, ctx->current_buffer);
 | 
			
		||||
	buffer_toggle_unimportant (ctx, ctx->current_buffer);
 | 
			
		||||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -15444,10 +15451,12 @@ client_message_buffer_name (const struct relay_command_message *m)
 | 
			
		||||
	{
 | 
			
		||||
	case RELAY_COMMAND_BUFFER_COMPLETE:
 | 
			
		||||
		return m->data.buffer_input.buffer_name.str;
 | 
			
		||||
	case RELAY_COMMAND_BUFFER_INPUT:
 | 
			
		||||
		return m->data.buffer_input.buffer_name.str;
 | 
			
		||||
	case RELAY_COMMAND_BUFFER_ACTIVATE:
 | 
			
		||||
		return m->data.buffer_activate.buffer_name.str;
 | 
			
		||||
	case RELAY_COMMAND_BUFFER_INPUT:
 | 
			
		||||
		return m->data.buffer_input.buffer_name.str;
 | 
			
		||||
	case RELAY_COMMAND_BUFFER_TOGGLE_UNIMPORTANT:
 | 
			
		||||
		return m->data.buffer_toggle_unimportant.buffer_name.str;
 | 
			
		||||
	case RELAY_COMMAND_BUFFER_LOG:
 | 
			
		||||
		return m->data.buffer_log.buffer_name.str;
 | 
			
		||||
	default:
 | 
			
		||||
@@ -15573,11 +15582,14 @@ client_process_message (struct client *c,
 | 
			
		||||
		client_process_buffer_complete (c, m->command_seq, buffer,
 | 
			
		||||
			&m->data.buffer_complete);
 | 
			
		||||
		break;
 | 
			
		||||
	case RELAY_COMMAND_BUFFER_ACTIVATE:
 | 
			
		||||
		buffer_activate (c->ctx, buffer);
 | 
			
		||||
		break;
 | 
			
		||||
	case RELAY_COMMAND_BUFFER_INPUT:
 | 
			
		||||
		process_input (c->ctx, buffer, m->data.buffer_input.text.str);
 | 
			
		||||
		break;
 | 
			
		||||
	case RELAY_COMMAND_BUFFER_ACTIVATE:
 | 
			
		||||
		buffer_activate (c->ctx, buffer);
 | 
			
		||||
	case RELAY_COMMAND_BUFFER_TOGGLE_UNIMPORTANT:
 | 
			
		||||
		buffer_toggle_unimportant (c->ctx, buffer);
 | 
			
		||||
		break;
 | 
			
		||||
	case RELAY_COMMAND_BUFFER_LOG:
 | 
			
		||||
		client_process_buffer_log (c, m->command_seq, buffer);
 | 
			
		||||
 
 | 
			
		||||
@@ -194,6 +194,10 @@ function bufferActivate(name) {
 | 
			
		||||
	rpc.send({command: 'BufferActivate', bufferName: name})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function bufferToggleUnimportant(name) {
 | 
			
		||||
	rpc.send({command: 'BufferToggleUnimportant', bufferName: name})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function bufferToggleLog() {
 | 
			
		||||
	if (bufferLog) {
 | 
			
		||||
		setTimeout(() =>
 | 
			
		||||
@@ -860,6 +864,10 @@ document.addEventListener('keydown', event => {
 | 
			
		||||
	case 'h':
 | 
			
		||||
		bufferToggleLog()
 | 
			
		||||
		break
 | 
			
		||||
	case 'H':
 | 
			
		||||
		if (bufferCurrent !== undefined)
 | 
			
		||||
			bufferToggleUnimportant(bufferCurrent)
 | 
			
		||||
		break
 | 
			
		||||
	case 'a':
 | 
			
		||||
		for (const name of names.slice(1))
 | 
			
		||||
			if (buffers.get(name).newMessages) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user