mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
luahl: temporary workaround for virt_text ownership ambiguity
This commit is contained in:
parent
4042975df4
commit
2c15f695a8
@ -844,6 +844,13 @@ VirtText *extmark_find_virttext(buf_T *buf, int row, uint64_t ns_id)
|
|||||||
bool decorations_redraw_reset(buf_T *buf, DecorationRedrawState *state)
|
bool decorations_redraw_reset(buf_T *buf, DecorationRedrawState *state)
|
||||||
{
|
{
|
||||||
state->row = -1;
|
state->row = -1;
|
||||||
|
for (size_t i = 0; i < kv_size(state->active); i++) {
|
||||||
|
HlRange item = kv_A(state->active, i);
|
||||||
|
if (item.virt_text_owned) {
|
||||||
|
clear_virttext(item.virt_text);
|
||||||
|
xfree(item.virt_text);
|
||||||
|
}
|
||||||
|
}
|
||||||
kv_size(state->active) = 0;
|
kv_size(state->active) = 0;
|
||||||
return buf->b_extmark_index;
|
return buf->b_extmark_index;
|
||||||
}
|
}
|
||||||
@ -889,10 +896,10 @@ bool decorations_redraw_start(buf_T *buf, int top_row,
|
|||||||
HlRange range;
|
HlRange range;
|
||||||
if (mark.id&MARKTREE_END_FLAG) {
|
if (mark.id&MARKTREE_END_FLAG) {
|
||||||
range = (HlRange){ altpos.row, altpos.col, mark.row, mark.col,
|
range = (HlRange){ altpos.row, altpos.col, mark.row, mark.col,
|
||||||
attr_id, vt };
|
attr_id, vt, false };
|
||||||
} else {
|
} else {
|
||||||
range = (HlRange){ mark.row, mark.col, altpos.row,
|
range = (HlRange){ mark.row, mark.col, altpos.row,
|
||||||
altpos.col, attr_id, vt };
|
altpos.col, attr_id, vt, false };
|
||||||
}
|
}
|
||||||
kv_push(state->active, range);
|
kv_push(state->active, range);
|
||||||
|
|
||||||
@ -957,7 +964,7 @@ int decorations_redraw_col(buf_T *buf, int col, DecorationRedrawState *state)
|
|||||||
VirtText *vt = kv_size(decor->virt_text) ? &decor->virt_text : NULL;
|
VirtText *vt = kv_size(decor->virt_text) ? &decor->virt_text : NULL;
|
||||||
kv_push(state->active, ((HlRange){ mark.row, mark.col,
|
kv_push(state->active, ((HlRange){ mark.row, mark.col,
|
||||||
endpos.row, endpos.col,
|
endpos.row, endpos.col,
|
||||||
attr_id, vt }));
|
attr_id, vt, false }));
|
||||||
|
|
||||||
next_mark:
|
next_mark:
|
||||||
marktree_itr_next(buf->b_marktree, state->itr);
|
marktree_itr_next(buf->b_marktree, state->itr);
|
||||||
@ -991,6 +998,9 @@ next_mark:
|
|||||||
}
|
}
|
||||||
if (keep) {
|
if (keep) {
|
||||||
kv_A(state->active, j++) = kv_A(state->active, i);
|
kv_A(state->active, j++) = kv_A(state->active, i);
|
||||||
|
} else if (item.virt_text_owned) {
|
||||||
|
clear_virttext(item.virt_text);
|
||||||
|
xfree(item.virt_text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
kv_size(state->active) = j;
|
kv_size(state->active) = j;
|
||||||
|
@ -85,6 +85,7 @@ typedef struct {
|
|||||||
int end_col;
|
int end_col;
|
||||||
int attr_id;
|
int attr_id;
|
||||||
VirtText *virt_text;
|
VirtText *virt_text;
|
||||||
|
bool virt_text_owned;
|
||||||
} HlRange;
|
} HlRange;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -645,7 +645,7 @@ void decorations_add_luahl_attr(int attr_id,
|
|||||||
{
|
{
|
||||||
kv_push(decorations.active,
|
kv_push(decorations.active,
|
||||||
((HlRange){ start_row, start_col,
|
((HlRange){ start_row, start_col,
|
||||||
end_row, end_col, attr_id, virt_text }));
|
end_row, end_col, attr_id, virt_text, true }));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user