mirror of
https://github.com/neovim/neovim.git
synced 2025-10-07 02:16:31 +00:00
fix(tui): more work in the TUI
This commit is contained in:
@@ -298,7 +298,7 @@ error:
|
||||
//
|
||||
// When method is "grid_line", we furthermore decode a cell at a time like:
|
||||
//
|
||||
// <0>[2, "redraw", <10>[{11}["grid_line", <13>[g, r, c, [<14>[cell], <14>[cell], ...]], ...], <11>[...], ...]]
|
||||
// <0>[2, "redraw", <10>[{11}["grid_line", <14>[g, r, c, [<15>[cell], <15>[cell], ...]], ...], <11>[...], ...]]
|
||||
//
|
||||
// where [cell] is [char, repeat, attr], where 'repeat' and 'attr' is optional
|
||||
|
||||
@@ -318,17 +318,19 @@ bool unpacker_advance(Unpacker *p)
|
||||
}
|
||||
}
|
||||
|
||||
if (p->state >= 10 && p->state != 12) {
|
||||
if (p->state >= 10 && p->state != 13) {
|
||||
if (!unpacker_parse_redraw(p)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (p->state == 14) {
|
||||
if (p->state == 15) {
|
||||
// grid_line event already unpacked
|
||||
goto done;
|
||||
} else {
|
||||
assert(p->state == 12);
|
||||
// unpack other ui events using mpack_parse()
|
||||
p->arena = (Arena)ARENA_EMPTY;
|
||||
p->state = 13;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -355,11 +357,11 @@ done:
|
||||
case 2:
|
||||
p->state = 0;
|
||||
return true;
|
||||
case 12:
|
||||
case 14:
|
||||
case 13:
|
||||
case 15:
|
||||
p->ncalls--;
|
||||
if (p->ncalls > 0) {
|
||||
p->state = (p->state == 14) ? 13 : 12;
|
||||
p->state = (p->state == 15) ? 14 : 12;
|
||||
} else if (p->nevents > 0) {
|
||||
p->state = 11;
|
||||
} else {
|
||||
@@ -428,14 +430,14 @@ redo:
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
p->state = 13;
|
||||
p->state = 14;
|
||||
p->arena = (Arena)ARENA_EMPTY;
|
||||
p->grid_line_event = arena_alloc(&p->arena, sizeof *p->grid_line_event, true);
|
||||
g = p->grid_line_event;
|
||||
}
|
||||
FALLTHROUGH;
|
||||
|
||||
case 13:
|
||||
case 14:
|
||||
NEXT_TYPE(tok, MPACK_TOKEN_ARRAY);
|
||||
int eventarrsize = (int)tok.length;
|
||||
if (eventarrsize != 4) {
|
||||
@@ -456,10 +458,10 @@ redo:
|
||||
|
||||
p->read_ptr = data;
|
||||
p->read_size = size;
|
||||
p->state = 14;
|
||||
p->state = 15;
|
||||
FALLTHROUGH;
|
||||
|
||||
case 14:
|
||||
case 15:
|
||||
assert(g->icell < g->ncells);
|
||||
|
||||
NEXT_TYPE(tok, MPACK_TOKEN_ARRAY);
|
||||
@@ -513,6 +515,9 @@ redo:
|
||||
}
|
||||
goto redo;
|
||||
|
||||
case 12:
|
||||
return true;
|
||||
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
|
Reference in New Issue
Block a user