diff options
author | Luuk van Baal <luukvbaal@gmail.com> | 2023-11-27 16:22:19 +0100 |
---|---|---|
committer | Lewis Russell <me@lewisr.dev> | 2023-11-28 16:44:20 +0000 |
commit | 35cec0de4acd351119230330f54b0a45f9823695 (patch) | |
tree | 037df46125ccb4cae871b66147918553671c5228 /src/nvim/buffer.c | |
parent | adb2258345409d08c42809da0212eeb792e70106 (diff) | |
download | rneovim-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.c | 9 |
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); } } |