aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/decoration.c3
-rw-r--r--test/functional/ui/decorations_spec.lua29
2 files changed, 31 insertions, 1 deletions
diff --git a/src/nvim/decoration.c b/src/nvim/decoration.c
index e4828bcc31..792204bdbc 100644
--- a/src/nvim/decoration.c
+++ b/src/nvim/decoration.c
@@ -121,7 +121,8 @@ void decor_redraw(buf_T *buf, int row1, int row2, int col1, DecorInline decor)
void decor_redraw_sh(buf_T *buf, int row1, int row2, DecorSignHighlight sh)
{
- if (sh.hl_id || (sh.url != NULL) || (sh.flags & (kSHIsSign|kSHSpellOn|kSHSpellOff))) {
+ if (sh.hl_id || (sh.url != NULL)
+ || (sh.flags & (kSHIsSign | kSHSpellOn | kSHSpellOff | kSHConceal))) {
if (row2 >= row1) {
redraw_buf_range_later(buf, row1 + 1, row2 + 1);
}
diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua
index 951188614b..e877dd2283 100644
--- a/test/functional/ui/decorations_spec.lua
+++ b/test/functional/ui/decorations_spec.lua
@@ -1742,6 +1742,35 @@ describe('extmark decorations', function()
]]}
end)
+ it('redraws properly when adding/removing conceal on non-current line', function()
+ screen:try_resize(50, 5)
+ api.nvim_buf_set_lines(0, 0, -1, true, {'abcd', 'efgh','ijkl', 'mnop'})
+ command('setlocal conceallevel=2')
+ screen:expect{grid=[[
+ ^abcd |
+ efgh |
+ ijkl |
+ mnop |
+ |
+ ]]}
+ api.nvim_buf_set_extmark(0, ns, 2, 1, {end_col=3, conceal=''})
+ screen:expect{grid=[[
+ ^abcd |
+ efgh |
+ il |
+ mnop |
+ |
+ ]]}
+ api.nvim_buf_clear_namespace(0, ns, 0, -1)
+ screen:expect{grid=[[
+ ^abcd |
+ efgh |
+ ijkl |
+ mnop |
+ |
+ ]]}
+ end)
+
it('avoids redraw issue #20651', function()
exec_lua[[
vim.cmd.normal'10oXXX'