diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2015-01-18 15:05:04 +0100 |
---|---|---|
committer | Björn Linse <bjorn.linse@gmail.com> | 2016-02-23 21:29:01 +0100 |
commit | 44b2cef83af798429f675b3f244d52c59a4a9047 (patch) | |
tree | 1e1fa6e7bbb08abf9db294b7f09b5f7b754a6213 /src/nvim/screen.c | |
parent | 18605d678517ca7347a8fae234e5f39f79fb6904 (diff) | |
download | rneovim-44b2cef83af798429f675b3f244d52c59a4a9047.tar.gz rneovim-44b2cef83af798429f675b3f244d52c59a4a9047.tar.bz2 rneovim-44b2cef83af798429f675b3f244d52c59a4a9047.zip |
bufhl: new mechanism for plugins to add highlights to a buffer
Diffstat (limited to 'src/nvim/screen.c')
-rw-r--r-- | src/nvim/screen.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 3b5836f0b5..cd440fe8dc 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -2184,6 +2184,10 @@ win_line ( int prev_c1 = 0; /* first composing char for prev_c */ int did_line_attr = 0; + bool has_bufhl = false; // this buffer has highlight matches + int bufhl_attr = 0; // attributes desired by bufhl + bufhl_lineinfo_T bufhl_info; // bufhl data for this line + /* draw_state: items that are drawn in sequence: */ #define WL_START 0 /* nothing done yet */ # define WL_CMDLINE WL_START + 1 /* cmdline window column */ @@ -2244,6 +2248,11 @@ win_line ( } } + if (bufhl_start_line(wp->w_buffer, lnum, &bufhl_info)) { + has_bufhl = true; + extra_check = true; + } + /* Check for columns to display for 'colorcolumn'. */ color_cols = wp->w_buffer->terminal ? NULL : wp->w_p_cc_cols; if (color_cols != NULL) @@ -3335,6 +3344,17 @@ win_line ( char_attr = hl_combine_attr(spell_attr, char_attr); } + if (has_bufhl && v > 0) { + bufhl_attr = bufhl_get_attr(&bufhl_info, (colnr_T)v); + if (bufhl_attr != 0) { + if (!attr_pri) { + char_attr = hl_combine_attr(char_attr, bufhl_attr); + } else { + char_attr = hl_combine_attr(bufhl_attr, char_attr); + } + } + } + if (wp->w_buffer->terminal) { char_attr = hl_combine_attr(char_attr, term_attrs[vcol]); } |