aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/screen.c
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2021-04-15 01:12:36 +0200
committerGitHub <noreply@github.com>2021-04-15 01:12:36 +0200
commit3b01e37d09933cca8b957b7517d7f7345d4ccc4f (patch)
tree4bfde71c986234879ba036ea7817d93e52a4cb2e /src/nvim/screen.c
parent9471b159362aabd35ef044a95e46520e8c110a57 (diff)
parent7b488314d09ec75420e7d5a7ec4df62151611cd6 (diff)
downloadrneovim-3b01e37d09933cca8b957b7517d7f7345d4ccc4f.tar.gz
rneovim-3b01e37d09933cca8b957b7517d7f7345d4ccc4f.tar.bz2
rneovim-3b01e37d09933cca8b957b7517d7f7345d4ccc4f.zip
Merge pull request #14358 from bfredl/decodeco
decoration: Clean up duplicate Decoration attributes + bonus hl_eol flag
Diffstat (limited to 'src/nvim/screen.c')
-rw-r--r--src/nvim/screen.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index 9fb2eb2772..9f11bae16c 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -3951,7 +3951,7 @@ static int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow,
.hl_id = hl_err }));
do_virttext = true;
} else if (has_decor) {
- virt_text = decor_redraw_virt_text(wp->w_buffer, &decor_state);
+ virt_text = decor_redraw_eol(wp->w_buffer, &decor_state, &line_attr);
if (kv_size(virt_text)) {
do_virttext = true;
}
@@ -4381,11 +4381,12 @@ void draw_virt_text(buf_T *buf, int *end_col, int max_col)
{
DecorState *state = &decor_state;
for (size_t i = 0; i < kv_size(state->active); i++) {
- HlRange *item = &kv_A(state->active, i);
- if (item->start_row == state->row && kv_size(item->virt_text)
- && item->virt_text_pos == kVTOverlay
+ DecorRange *item = &kv_A(state->active, i);
+ if (item->start_row == state->row && kv_size(item->decor.virt_text)
+ && item->decor.virt_text_pos == kVTOverlay
&& item->virt_col >= 0) {
- VirtText vt = item->virt_text;
+ VirtText vt = item->decor.virt_text;
+ HlMode hl_mode = item->decor.hl_mode;
LineState s = LINE_STATE("");
int virt_attr = 0;
int col = item->virt_col;
@@ -4405,9 +4406,9 @@ void draw_virt_text(buf_T *buf, int *end_col, int max_col)
}
int attr;
bool through = false;
- if (item->hl_mode == kHlModeCombine) {
+ if (hl_mode == kHlModeCombine) {
attr = hl_combine_attr(linebuf_attr[col], virt_attr);
- } else if (item->hl_mode == kHlModeBlend) {
+ } else if (hl_mode == kHlModeBlend) {
through = (*s.p == ' ');
attr = hl_blend_attrs(linebuf_attr[col], virt_attr, &through);
} else {