aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/grid.c1
-rw-r--r--test/functional/ui/highlight_spec.lua27
2 files changed, 19 insertions, 9 deletions
diff --git a/src/nvim/grid.c b/src/nvim/grid.c
index f20a9a847d..cd70e98047 100644
--- a/src/nvim/grid.c
+++ b/src/nvim/grid.c
@@ -549,6 +549,7 @@ void grid_put_linebuf(ScreenGrid *grid, int row, int coloff, int endcol, int cle
}
if (bg_attr) {
+ assert(off_from == (size_t)col);
for (int c = col; c < endcol; c++) {
linebuf_attr[c] = hl_combine_attr(bg_attr, linebuf_attr[c]);
}
diff --git a/test/functional/ui/highlight_spec.lua b/test/functional/ui/highlight_spec.lua
index 2bbc29b78f..d5e0eefb41 100644
--- a/test/functional/ui/highlight_spec.lua
+++ b/test/functional/ui/highlight_spec.lua
@@ -1812,19 +1812,28 @@ describe("'winhighlight' highlight", function()
]])
end)
- it('works for background color in rightleft window in vsplit #22640', function()
- screen:try_resize(40, 6)
+ it('works for background color in rightleft window #22640', function()
+ -- Use a wide screen to also check that this doesn't overflow linebuf_attr.
+ screen:try_resize(80, 6)
insert('aa')
command('setlocal rightleft')
- command('botright vsplit')
command('setlocal winhl=Normal:Background1')
screen:expect([[
- aa│{1: ^aa}|
- {0: ~}│{2: ~}|
- {0: ~}│{2: ~}|
- {0: ~}│{2: ~}|
- {4:[No Name] [+] }{3:[No Name] [+] }|
- |
+ {1: ^aa}|
+ {2: ~}|
+ {2: ~}|
+ {2: ~}|
+ {2: ~}|
+ |
+ ]])
+ command('botright vsplit')
+ screen:expect([[
+ {1: aa│ ^aa}|
+ {2: ~}{1:│}{2: ~}|
+ {2: ~}{1:│}{2: ~}|
+ {2: ~}{1:│}{2: ~}|
+ {4:[No Name] [+] }{3:[No Name] [+] }|
+ |
]])
end)