aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/buffer.c
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2022-01-03 12:22:13 +0000
committerLewis Russell <lewis6991@gmail.com>2022-03-05 16:51:59 +0000
commit30e4cc3b3f2133e9a7170da9da8175832681f39a (patch)
tree76cca17f4b3389246743afc5febaeb11deeb20b1 /src/nvim/buffer.c
parent83fc914337100d03f2e41a3943ccf0107d893698 (diff)
downloadrneovim-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.c19
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) {