diff options
author | Lewis Russell <lewis6991@gmail.com> | 2022-01-03 12:22:13 +0000 |
---|---|---|
committer | Lewis Russell <lewis6991@gmail.com> | 2022-03-05 16:51:59 +0000 |
commit | 30e4cc3b3f2133e9a7170da9da8175832681f39a (patch) | |
tree | 76cca17f4b3389246743afc5febaeb11deeb20b1 /src/nvim/buffer.c | |
parent | 83fc914337100d03f2e41a3943ccf0107d893698 (diff) | |
download | rneovim-30e4cc3b3f2133e9a7170da9da8175832681f39a.tar.gz rneovim-30e4cc3b3f2133e9a7170da9da8175832681f39a.tar.bz2 rneovim-30e4cc3b3f2133e9a7170da9da8175832681f39a.zip |
feat(decorations): support signs
Add the following options to extmarks:
- sign_text
- sign_hl_group
- number_hl_group
- line_hl_group
- cursorline_hl_group
Note: ranges are unsupported and decorations are only applied to
start_row
Diffstat (limited to 'src/nvim/buffer.c')
-rw-r--r-- | src/nvim/buffer.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index 9e82b4e80b..084e18c6cb 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -36,6 +36,7 @@ #include "nvim/cursor.h" #include "nvim/diff.h" #include "nvim/digraph.h" +#include "nvim/decoration.h" #include "nvim/eval.h" #include "nvim/ex_cmds.h" #include "nvim/ex_cmds2.h" @@ -5469,6 +5470,11 @@ static int buf_signcols_inner(buf_T *buf, int maximum) FOR_ALL_SIGNS_IN_BUF(buf, sign) { if (sign->se_lnum > curline) { + // Counted all signs, now add extmark signs + if (curline > 0) { + linesum += decor_signcols(buf, &decor_state, (int)curline-1, (int)curline-1, + maximum-linesum); + } if (linesum > signcols) { signcols = linesum; if (signcols >= maximum) { @@ -5483,6 +5489,19 @@ static int buf_signcols_inner(buf_T *buf, int maximum) } } + if (curline > 0) { + linesum += decor_signcols(buf, &decor_state, (int)curline-1, (int)curline-1, maximum-linesum); + } + if (linesum > signcols) { + signcols = linesum; + if (signcols >= maximum) { + return maximum; + } + } + + // Check extmarks between signs + linesum = decor_signcols(buf, &decor_state, 0, (int)buf->b_ml.ml_line_count-1, maximum); + if (linesum > signcols) { signcols = linesum; if (signcols >= maximum) { |