aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/buffer.c
diff options
context:
space:
mode:
authorLuuk van Baal <luukvbaal@gmail.com>2023-11-27 16:22:19 +0100
committerLewis Russell <me@lewisr.dev>2023-11-28 16:44:20 +0000
commit35cec0de4acd351119230330f54b0a45f9823695 (patch)
tree037df46125ccb4cae871b66147918553671c5228 /src/nvim/buffer.c
parentadb2258345409d08c42809da0212eeb792e70106 (diff)
downloadrneovim-35cec0de4acd351119230330f54b0a45f9823695.tar.gz
rneovim-35cec0de4acd351119230330f54b0a45f9823695.tar.bz2
rneovim-35cec0de4acd351119230330f54b0a45f9823695.zip
fix(column): redraw and update signcols for paired extmark
Problem: Signcolumn width does not increase when ranged sign does not start at sentinel line. Solution: Handle paired range of added sign when checking signcols.
Diffstat (limited to 'src/nvim/buffer.c')
-rw-r--r--src/nvim/buffer.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c
index 86cf805345..2a3cebc0ae 100644
--- a/src/nvim/buffer.c
+++ b/src/nvim/buffer.c
@@ -4055,7 +4055,7 @@ void buf_signcols_del_check(buf_T *buf, linenr_T line1, linenr_T line2)
///
/// @param buf buffer to check
/// @param added sign being added
-void buf_signcols_add_check(buf_T *buf, linenr_T lnum)
+void buf_signcols_add_check(buf_T *buf, linenr_T line1, linenr_T line2)
{
if (!buf->b_signcols.valid) {
return;
@@ -4066,7 +4066,9 @@ void buf_signcols_add_check(buf_T *buf, linenr_T lnum)
return;
}
- if (lnum == buf->b_signcols.sentinel) {
+ linenr_T sent = buf->b_signcols.sentinel;
+
+ if (sent >= line1 && sent <= line2) {
if (buf->b_signcols.size == buf->b_signcols.max) {
buf->b_signcols.max++;
}
@@ -4075,12 +4077,11 @@ void buf_signcols_add_check(buf_T *buf, linenr_T lnum)
return;
}
- int signcols = decor_signcols(buf, lnum - 1, lnum - 1, SIGN_SHOW_MAX);
+ int signcols = decor_signcols(buf, line1 - 1, line2 - 1, SIGN_SHOW_MAX);
if (signcols > buf->b_signcols.size) {
buf->b_signcols.size = signcols;
buf->b_signcols.max = signcols;
- buf->b_signcols.sentinel = lnum;
redraw_buf_later(buf, UPD_NOT_VALID);
}
}