Compare commits
	
		
			No commits in common. "2341228efd02bcd4c99214885a5214826bfffa5c" and "2b13f891c9205e3bd0da7c562ee95d1b9b664e7d" have entirely different histories.
		
	
	
		
			2341228efd
			...
			2b13f891c9
		
	
		
							
								
								
									
										1
									
								
								xC-proto
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								xC-proto
									
									
									
									
									
								
							| @ -60,7 +60,6 @@ struct EventMessage { | |||||||
| 		string buffer_name; | 		string buffer_name; | ||||||
| 	case BUFFER_LINE: | 	case BUFFER_LINE: | ||||||
| 		string buffer_name; | 		string buffer_name; | ||||||
| 		bool leak_to_active; |  | ||||||
| 		bool is_unimportant; | 		bool is_unimportant; | ||||||
| 		bool is_highlight; | 		bool is_highlight; | ||||||
| 		enum Rendition { | 		enum Rendition { | ||||||
|  | |||||||
							
								
								
									
										14
									
								
								xC.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								xC.c
									
									
									
									
									
								
							| @ -3097,7 +3097,7 @@ relay_prepare_buffer_activate (struct app_context *ctx, struct buffer *buffer) | |||||||
| 
 | 
 | ||||||
| static void | static void | ||||||
| relay_prepare_buffer_line (struct app_context *ctx, struct buffer *buffer, | relay_prepare_buffer_line (struct app_context *ctx, struct buffer *buffer, | ||||||
| 	struct buffer_line *line, bool leak_to_active) | 	struct buffer_line *line) | ||||||
| { | { | ||||||
| 	struct relay_event_message *m = relay_prepare (ctx); | 	struct relay_event_message *m = relay_prepare (ctx); | ||||||
| 	struct relay_event_data_buffer_line *e = &m->data.buffer_line; | 	struct relay_event_data_buffer_line *e = &m->data.buffer_line; | ||||||
| @ -3107,7 +3107,6 @@ relay_prepare_buffer_line (struct app_context *ctx, struct buffer *buffer, | |||||||
| 	e->is_highlight = !!(line->flags & BUFFER_LINE_HIGHLIGHT); | 	e->is_highlight = !!(line->flags & BUFFER_LINE_HIGHLIGHT); | ||||||
| 	e->rendition = 1 + line->r; | 	e->rendition = 1 + line->r; | ||||||
| 	e->when = line->when * 1000; | 	e->when = line->when * 1000; | ||||||
| 	e->leak_to_active = leak_to_active; |  | ||||||
| 
 | 
 | ||||||
| 	size_t len = 0; | 	size_t len = 0; | ||||||
| 	for (size_t i = 0; line->items[i].type; i++) | 	for (size_t i = 0; line->items[i].type; i++) | ||||||
| @ -4589,6 +4588,9 @@ log_formatter (struct app_context *ctx, struct buffer *buffer, | |||||||
| 	if (buffer->log_file) | 	if (buffer->log_file) | ||||||
| 		buffer_line_write_to_log (ctx, line, buffer->log_file); | 		buffer_line_write_to_log (ctx, line, buffer->log_file); | ||||||
| 
 | 
 | ||||||
|  | 	relay_prepare_buffer_line (ctx, buffer, line); | ||||||
|  | 	relay_broadcast (ctx); | ||||||
|  | 
 | ||||||
| 	bool unseen_pm = buffer->type == BUFFER_PM | 	bool unseen_pm = buffer->type == BUFFER_PM | ||||||
| 		&& buffer != ctx->current_buffer | 		&& buffer != ctx->current_buffer | ||||||
| 		&& !(flags & BUFFER_LINE_UNIMPORTANT); | 		&& !(flags & BUFFER_LINE_UNIMPORTANT); | ||||||
| @ -4605,10 +4607,6 @@ log_formatter (struct app_context *ctx, struct buffer *buffer, | |||||||
| 		&& buffer == ctx->current_buffer->server->buffer)) | 		&& buffer == ctx->current_buffer->server->buffer)) | ||||||
| 		can_leak = true; | 		can_leak = true; | ||||||
| 
 | 
 | ||||||
| 	relay_prepare_buffer_line |  | ||||||
| 		(ctx, buffer, line, can_leak && !ctx->isolate_buffers); |  | ||||||
| 	relay_broadcast (ctx); |  | ||||||
| 
 |  | ||||||
| 	bool displayed = true; | 	bool displayed = true; | ||||||
| 	if (ctx->terminal_suspended > 0) | 	if (ctx->terminal_suspended > 0) | ||||||
| 		// Another process is using the terminal
 | 		// Another process is using the terminal
 | ||||||
| @ -5013,7 +5011,7 @@ buffer_merge (struct app_context *ctx, | |||||||
| 	// And since there is no log_*() call, send them to relays manually
 | 	// And since there is no log_*() call, send them to relays manually
 | ||||||
| 	LIST_FOR_EACH (struct buffer_line, line, start) | 	LIST_FOR_EACH (struct buffer_line, line, start) | ||||||
| 	{ | 	{ | ||||||
| 		relay_prepare_buffer_line (ctx, buffer, line, false); | 		relay_prepare_buffer_line (ctx, buffer, line); | ||||||
| 		relay_broadcast (ctx); | 		relay_broadcast (ctx); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| @ -15168,7 +15166,7 @@ client_resync (struct client *c) | |||||||
| 
 | 
 | ||||||
| 		LIST_FOR_EACH (struct buffer_line, line, buffer->lines) | 		LIST_FOR_EACH (struct buffer_line, line, buffer->lines) | ||||||
| 		{ | 		{ | ||||||
| 			relay_prepare_buffer_line (c->ctx, buffer, line, false); | 			relay_prepare_buffer_line (c->ctx, buffer, line); | ||||||
| 			relay_send (c); | 			relay_send (c); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -63,9 +63,6 @@ body { | |||||||
| 	overflow-y: auto; | 	overflow-y: auto; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .leaked { |  | ||||||
| 	opacity: 50%; |  | ||||||
| } |  | ||||||
| .date { | .date { | ||||||
| 	padding: .3rem; | 	padding: .3rem; | ||||||
| 	grid-column: span 2; | 	grid-column: span 2; | ||||||
|  | |||||||
| @ -195,12 +195,10 @@ rpc.addEventListener('BufferActivate', event => { | |||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| rpc.addEventListener('BufferLine', event => { | rpc.addEventListener('BufferLine', event => { | ||||||
| 	let e = event.detail, b = buffers.get(e.bufferName), | 	let e = event.detail, b = buffers.get(e.bufferName) | ||||||
| 		line = {when: e.when, rendition: e.rendition, items: e.items} | 	if (b === undefined) | ||||||
| 	if (b !== undefined) | 		return | ||||||
| 		b.lines.push({...line}) | 	b.lines.push({when: e.when, rendition: e.rendition, items: e.items}) | ||||||
| 	if (e.leakToActive && (b = buffers.get(bufferCurrent)) !== undefined) |  | ||||||
| 		b.lines.push({leaked: true, ...line}) |  | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| rpc.addEventListener('BufferClear', event => { | rpc.addEventListener('BufferClear', event => { | ||||||
| @ -329,7 +327,7 @@ let Content = { | |||||||
| 				classes.add(c) | 				classes.add(c) | ||||||
| 		} | 		} | ||||||
| 		let fg = -1, bg = -1, inverse = false | 		let fg = -1, bg = -1, inverse = false | ||||||
| 		return m('.content', vnode.attrs, [mark, line.items.flatMap(item => { | 		return m('.content', {}, [mark, line.items.flatMap(item => { | ||||||
| 			switch (item.kind) { | 			switch (item.kind) { | ||||||
| 			case 'Text': | 			case 'Text': | ||||||
| 				return Content.linkify(item.text, { | 				return Content.linkify(item.text, { | ||||||
| @ -395,12 +393,8 @@ let Buffer = { | |||||||
| 				lastDateMark = dateMark | 				lastDateMark = dateMark | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			let attrs = {} | 			lines.push(m('.time', {}, date.toLocaleTimeString())) | ||||||
| 			if (line.leaked) | 			lines.push(m(Content, {}, line)) | ||||||
| 				attrs.class = 'leaked' |  | ||||||
| 
 |  | ||||||
| 			lines.push(m('.time', {...attrs}, date.toLocaleTimeString())) |  | ||||||
| 			lines.push(m(Content, {...attrs}, line)) |  | ||||||
| 		}) | 		}) | ||||||
| 		return m('.buffer', {}, lines) | 		return m('.buffer', {}, lines) | ||||||
| 	}, | 	}, | ||||||
| @ -427,28 +421,16 @@ let BufferContainer = { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| let Input = { | let Input = { | ||||||
| 	counter: 0, |  | ||||||
| 	stamp: textarea => { |  | ||||||
| 		return [Input.counter, |  | ||||||
| 			textarea.selectionStart, textarea.selectionEnd, textarea.value] |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	complete: textarea => { | 	complete: textarea => { | ||||||
| 		if (textarea.selectionStart !== textarea.selectionEnd) | 		if (textarea.selectionStart !== textarea.selectionEnd) | ||||||
| 			return false | 			return false | ||||||
| 
 | 
 | ||||||
| 		// Cancel any previous autocomplete, and ensure applicability.
 |  | ||||||
| 		Input.counter++ |  | ||||||
| 		let state = Input.stamp(textarea) |  | ||||||
| 		rpc.send({ | 		rpc.send({ | ||||||
| 			command: 'BufferComplete', | 			command: 'BufferComplete', | ||||||
| 			bufferName: bufferCurrent, | 			bufferName: bufferCurrent, | ||||||
| 			text: textarea.value, | 			text: textarea.value, | ||||||
| 			position: textarea.selectionEnd, | 			position: textarea.selectionEnd, | ||||||
| 		}).then(resp => { | 		}).then(resp => { | ||||||
| 			if (!Input.stamp(textarea).every((v, k) => v === state[k])) |  | ||||||
| 				return |  | ||||||
| 
 |  | ||||||
| 			// TODO: Somehow display remaining options, or cycle through.
 | 			// TODO: Somehow display remaining options, or cycle through.
 | ||||||
| 			if (resp.completions.length) | 			if (resp.completions.length) | ||||||
| 				textarea.setRangeText(resp.completions[0], | 				textarea.setRangeText(resp.completions[0], | ||||||
| @ -474,6 +456,8 @@ let Input = { | |||||||
| 		// TODO: And perhaps on other actions, too.
 | 		// TODO: And perhaps on other actions, too.
 | ||||||
| 		rpc.send({command: 'Active'}) | 		rpc.send({command: 'Active'}) | ||||||
| 
 | 
 | ||||||
|  | 		// TODO: Cancel any current autocomplete.
 | ||||||
|  | 
 | ||||||
| 		let textarea = event.currentTarget | 		let textarea = event.currentTarget | ||||||
| 		let handled = false | 		let handled = false | ||||||
| 		switch (event.keyCode) { | 		switch (event.keyCode) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user