Compare commits

..

No commits in common. "2341228efd02bcd4c99214885a5214826bfffa5c" and "2b13f891c9205e3bd0da7c562ee95d1b9b664e7d" have entirely different histories.

4 changed files with 15 additions and 37 deletions

View File

@ -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
View File

@ -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);
} }
} }

View File

@ -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;

View File

@ -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) {